我需要您在以下问题上的支持,因为这个问题已经困扰我一段时间了。我们有一个小的 c# 实用程序,它使用 GhostScript 打印给定的 PDF 。这个工具可以正常打印,但无法保留页面格式。然而,当我将 Adobe Acrobat 替换为 GhostScript 时,页面会按预期打印。因此,我认为,在GhostScript的命令行参数上犯了一些明显的错误。
背景
以下是核心 c# 逻辑,它以不同的样式打印给定的PDF文件中的每个页面。给定的PDF文件包含以下页面:
- 字体样式和颜色不一致的页面
- 一些页面具有普通字号,而其他页面则采用特别小的字号打印
- 一些页面具有建议的边距,而其他页面则具有非常小的边距
- 一些页面是彩色的,其余页面是灰色的。
- 一些页面是横向的,而其他页面是纵向的
简而言之,我要打印的PDF只是众多小型PDF文档(将单个PDF合并成一个大型PDF)的汇总,这些文档具有不同的字体样式、大小和边距。
问题
以下逻辑使用 GhostScript(v9.02)打印PDF文件。虽然以下逻辑可以打印任何给定的PDF,但它无法保留页面格式,包括页眉、页脚、字号、页边距、方向(我的PDF文件有横向和纵向的页面)。
有趣的是,如果我使用Acrobat Reader打印相同的PDF,则会按预期打印,并保留所有页面级格式。
void PrintDocument()
{
var psInfo = new ProcessStartInfo();
psInfo.Arguments =
String.Format(
" -dPrinted -dBATCH -dNOPAUSE -dNOSAFER -q -dNumCopies=1 -sDEVICE=ljet4 -sOutputFile=\"\\\\spool\\{0}\" \"{1}\"",
GetDefaultPrinter(), @"C:\PDFOutput\test.pdf");
psInfo.FileName = @"C:\Program Files\gs\gs9.10\bin\gswin64c.exe";
psInfo.UseShellExecute = false;
using (var process= Process.Start(psInfo))
{
process.WaitForExit();
}
}