我必须编写一个功能来获取 PDF 文档并将其发送到带有一些 PJL 命令的打印机。到目前为止一切顺利,我将文档转换为 Postscript,使用所需的命令将 postscript 文件发送到打印机,然后打印机打印文档。
现在到实际的问题:我们软件需要打印的大部分文件都是发票,因此它们是精心制作的,每个元素都被精确定位,如果它偏离毫米,打印的文件是无效的。当直接通过 Adobe 或任何 pdf 查看软件打印文档时,我可以选择该actual size
选项,一切都很好。虽然如果我通过 C# 和 PJL 打印它,文档的边距会根据打印它的打印机而有所不同。到目前为止,我们使用的是 pdfprinting.net,并且可以通过 选择该选项pdfPrint.Scale = PdfPrint.ScaleTypes.None
,但是如何通过 PJL 进行选择?
// This are all the commands that I've tried, none of which achieved what I need
var parameters = new Dictionary<string, string>
{
{ "SET USERNAME",userName},
//{"SET PAPER", "A4" },
//{"SET MEDIATYPE", "PAPER" },
//{"SET TOPMARGIN", "TM6MM" },
//{"SET PRINTAREA", "INKEDAREA" },
{"SET MARGINS", "SMALLER" },
//{ "ENTER LANGUAGE","PDF"},
{ "ENTER LANGUAGE","POSTSCRIPT"},
};
var documentText = "\x1B%-12345X@PJL JOB NAME=" + jobName + " DISPLAY=" + jobDisplay;
foreach (var parameter in parameters)
{
documentText += "\r\n@PJL " + parameter.Key + "=" + parameter.Value;
}
documentText += "\r\n";
documentText += pdfString;
documentText += "\r\n\x0D\x0A\x1B%-12345X\r\n";
RawPrint(printerAddress, documentText, documentName);
// RawPrint() calls the printer methods found in 'winspool.drv', imported via 'DllImport'