Okay, I had a fun week solving this problem. And with help of SAS Support which asked me to send them a short test code I found out what's the problem. Here's the example which were considered as a "proof of concept": ods graphics on / width = 900px height = 1000px imagefmt=png imagemap=no imagename="air_img" noborder noscale ANTIALIASMAX=110000; ods document name=global_report(write); proc sgplot data=SASHELP.air; title "Airline travel dynamics"; series x=date y=air; run; ods document close; ods graphics off; proc document name=global_report; replay; run; I deliberately underlined the ods graphics statement, because that was the key: when I'd wrote this example the question appeared "Why didn't I include the proc document in the ods graphics scope?". And here we get the correct code: ods graphics on / width = 900px height = 1000px imagefmt=png imagemap=no imagename="air_img" noborder noscale ANTIALIASMAX=110000; ods document name=global_report(write); proc sgplot data=SASHELP.air; title "Airline travel dynamics"; series x=date y=air; run; ods document close; proc document name=global_report; replay; run; ods graphics off; Voila! Everything has the right size which reveals that proc document actually use current ODS Graphics settings, not the original one. Now everything become obvious for me, but I wish SAS had placed a notice in the proc document or ods document help about this feature. Next level question is: what if I have 20 images of different sizes, should I use 20 reports (or do manual output "by name" in proc document, which is equivalent) and 20 ods graphics statements to reproduce it? At the moment I'm sure the answer is only - YES. Still, any suggestions would be very appreciated.
... View more