0

我已经在 Windows 7 (gswin64) 上安装了最新版本的 ghostscript。我正在尝试将 PDF 从旧版本转换为新版本。我需要从“CMD”窗口运行命令。我尝试运行此 gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.5 -dNOPAUSE -dQUIET -dBATCH -sOutputFile=new-pdf1.5.pdf C:\folder\original.pdf 并尝试将文件路径放入双引号中,例如“C :\文件夹\original.pdf"。

这没用。你能告诉我我做错了什么吗?

4

2 回答 2

1

以什么方式“不起作用”?请说明整个命令行,包括输入文件,顺序很重要。

你收到错误了吗?如果是这样,什么错误?你有没有在后台通道中得到任何东西?

为什么在尝试调试问题时使用 -dQUIET ?您想要 Ghostscript 可以为您提供的有关问题的所有信息,所以放弃它。

请注意,Ghostscript 不会“转换”PDF 文件,并且将 CompatibilityLevel 设置为 1.5 并没有多大作用。它只是限制了 pdfwrite 设备可用的功能。

如果输入不需要更高级别的功能,那么 pdfwrite 设备将不会使用它们。由于您的输入是较低版本的 PDF,它不会使用这些功能,因此尽管标题中的版本为 1.5,但实际内容将包含较低版本的功能。

您可以通过使用支持二进制的编辑器将原始 PDF 文件中的版本更改为 1.5 来获得相同的效果。

于 2018-06-15T08:23:46.760 回答
1

我已经发布了我使用的命令。感谢您帮助 KenS 开始我的研究。我不能发布 PDF,因为它是专有内容。但它确实升级了 PDF。

gswin64.exe -sDEVICE=pdfwrite -dCompatibilityLevel=1.3 -dNOPAUSE \
    -dBATCH -sOutputFile=C:\folder\new.pdf C:\folder\old.pdf

我需要弄清楚的下一个问题:如何在 C# .NET 中调用此过程?我需要执行以下操作:

使用上传控件上传文件(很简单) 获取上传文件的流并通过将转换 PDF 版本的 ghostscript 传递二进制流。--> 如何通过 ghostscript 传递流?由于 Ghostscript 需要保存在硬盘上的文件并将其写回硬盘?上传文件时必须在内存流中完成吗?

于 2018-07-25T17:25:36.123 回答