g = Graphics[{Rectangle[{0, 0}, {19, 28}], Orange, Rectangle[{0, 0}, {1, 1}]}]
Ok, the first thing you need to do is set the x and y directions to use the same units, which means
Show[g, AspectRatio -> Automatic]
But this is already the default value.
The second thing you need to do is select the size and range for your site. Let it make it 21 by 30 with centered rectangles:
plotArea = {{0, 21}, {0, 30}} - {1, 1} Show[g, AspectRatio -> Automatic, PlotRange -> plotArea]
The third thing you need to do is disable the addition of add-ons / fields that make the actual size of your figure larger than your graph:
final = Show[g, AspectRatio -> Automatic, PlotRange -> plotArea, PlotRangePadding -> 0, ImagePadding -> 0]
I believe ImageMargins doesn't make any difference, but if so, set it also to 0.
The last thing you need to do is export it to a print format that saves the image size and set the image size so that 1 cm is 1 unit in your area. Mathematica takes the size of the images at the points of the printer, so let's define:
cm = 72/2.54 Export["final.pdf", Show[final, ImageSize -> 21 cm]]
We want the plot to have a width of 21 cm, since it has a width of 21 inches. Use PDF as an export format, not TIFF. ImageSize needs to be used inside Show to solve some problems with Export ...
Now open the PDF in Adobe Reader, open the print dialog and make sure Page Scaling is set to No! I donβt know how to do it in other readers ... Also make sure your figure fits the paper (21 by 30 cm is too big for A4 ...)
I'm not going to make a test print, so let me know if this works for you :-) The size of the generated PDF file is exactly 21 by 30 cm, so if something goes wrong, this should happen at the printing stage. A.