问题
I'be been trying to send a PDF file to my printer to print using GhostscriptProcessor in C#. Everything is going well and the file is being printed but a slight zoom (around 1.1x - 1.05x) is being applied and I can't find a way to specify Top Margins or change the final size of the rendered PDF.
It seems like the page size from the printer are different from the ones I'm rendering. Is there any way to circumvent that?
This is what I have:
string printerName = "MIAUMIAUMIAU";
using (GhostscriptProcessor processor = new GhostscriptProcessor())
{
List<string> switches = new List<string>();
switches.Add("-empty");
switches.Add("-dPrinted");
switches.Add("-dBATCH");
switches.Add("-dNOPAUSE");
switches.Add("-dNOSAFER");
switches.Add("-dDuplex");
switches.Add("-dTumble=0");
switches.Add("-dNumCopies=1");
switches.Add("-sDEVICE=mswinpr2");
switches.Add("-sOutputFile=%printer%" + printerName);
switches.Add("-f");
switches.Add(inputFile);
processor.StartProcessing(switches.ToArray(), null);
}
回答1:
Sounds like the printable area of your printer and the MediaBox of the PDF file are slightly different. When rendering to a bitmap (which is how mswinpr2 works) Ghostscript will scale the PDF until its declared MediaBox matches the declared media size of the printer.
来源:https://stackoverflow.com/questions/30892309/using-ghostscriptprocessor-to-print-a-pdf-file-margins-are-messy