Ghostscript将pdf转换为pdf命令行参数不起作用

Posted

技术标签:

【中文标题】Ghostscript将pdf转换为pdf命令行参数不起作用【英文标题】:Ghostscript to convert pdf to pdf command line parameters do no work 【发布时间】:2018-06-15 01:58:45 【问题描述】:

我在 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"。

它不起作用。你能告诉我我做错了什么吗?

【问题讨论】:

【参考方案1】:

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

你有错误吗?如果是这样,什么错误?你在后台有什么收获吗?

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

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

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

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

【讨论】:

您好,肯,感谢您的回复。您是在告诉我 Ghostscript 不会将较低版本的 PDF 转换为较高版本中的相同 PDF? 你知道是否有一个 API 可以用来将低版本转换为高版本,反之亦然? 之所以要将低版本的pdf转换为新版本,是因为他们有一个病毒扫描网关,不允许上传低版本的pdf文档。所以我们想要一个免费的 API,我们可以使用它来检查使用 c# 代码上传的 PDF 的版本,并通过 API 将其转换为下一个更高版本的 PDF,然后通过我们现有的路线发送它。所以我正在寻找一种将PDF从低版本转换为高版本的方法。我只是想告诉你细节。请告诉我。 Ghostscript 没有什么可以“转换”的。它可以在新文件上粘贴更高的版本号,但由于文件中的唯一功能将来自旧文件,因此没有什么可以是“新的”。您可以使用它降级对 PDF 文件进行评分,但不能升级。 执行此操作的简单方法是更改​​标题中的版本号,例如从 %PDF-1.0 更改为 %PDF-1.5。不过,这不会改变内容,没有理由,PDF 是向上兼容的。【参考方案2】:

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

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

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

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

【讨论】:

以上是关于Ghostscript将pdf转换为pdf命令行参数不起作用的主要内容,如果未能解决你的问题,请参考以下文章

使用 Ghostscript 9.10 将 PDF 文件转换为 JPEG 文件的正确命令是啥?

Ghostscript将pdf转换为方向错误的pcl

使用 Ghostscript 将 TIFF 转换为 PDF

使用 Ghostscript 将 PDF 转换为 PDF/A 时出错

使用 ghostscript 将 jpg 列表转换为 pdf

使用 ghostscript 将 PDF 转换为 x-3:2002 时,我应该使用哪些设置来保持颜色正确?