I've seen videos of people making printers in Minecraft - but that requires either preloading unending chains of piston-pushed blocks "as ink" or some way of dispensing them from storage in form of built blocks. I was sure so farm that Dispenser "builds" a buildable block like cobblestone if fed that, but I was sorely disappointed - it drops them as pickable entities. Is the any way to automatically place blocks, without mods, or with some simple mods?
I don't know how exactly these work, but what you may be looking for is Trazlander's magic blocks. The general idea of them is that spawning minecarts spawn in falling sand entities in a certain way with certain IDs, so that when they land, they turn into a certain type of block and make some type of building or device. Then you can make these disappear by turning them into falling sand entities again, and have them fall on half slabs and disappear. Here is a video that explains them (by Trazlander himself):
You will need MCEdit to bring the magic block spawners into the game, but you won't need any mods once you go into the game. Here is where you can find the MCEdit filters for them: http://elemanser.com/filters.html
Trazlander has a tutorial on how to use these as well:
Using the tools available within vanilla survival Minecraft, there are only two types of solid blocks which can be produced indefinitely and moved by pistons: Cobblestone and Stone.
These are made using a “cobblestone generator” mechanism which brings lava and water into contact, then pushes the blocks out with a piston. Here's a simple design for one; the lava and water are blocked with glass for illustration. In operation, the lava and water attempt to flow into the pit at the center, and form a cobblestone block which can then be pushed out by the piston behind.
Cobblestone and Stone together are perhaps a little low-contrast for a printer, but you could use a custom texture pack to fix that if you are so inclined.
(A near miss: Pumpkins and Melons grow as solid blocks, but neither they nor their parent plants can be moved intact by pistons.)
As per OP's comment, I don't believe blocks can be placed coming out of a hopper/dispenser. What you might do is have a command block that tests for entities inside said hopper or dispenser, and if it finds one, removes it, then spawns the block with the same id on the space in front of it.