pdf - Ghostscript - 将 "pdfsettings=/ebook"放入各个参数中?

标签 pdf ghostscript acrobat

我正在为 RIP 引擎创建 pdf。 有时我必须将所有字体转换为轮廓,也许 1/1000 的 pdf 在翻录时会卡住。 为了转换为轮廓,我使用:

gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dNoOutputFonts -sOutputFile outlined_output.pdf input.pdf

发生这种情况时,我之前只是在 Acrobat 中打开 pdf,然后使用 PitStop 转换为大纲,因为我认为问题出在 Ghostscript 的大纲方式上。

现在,我注意到,如果我只是打开在 Acrobat 9 Standard 中翻录时卡住的同一个 pdf 并将其保存到另一个位置,它就会正常翻录。

然后我尝试了一堆 gs 命令,发现如果我使用 -dPDFSETTINGS=/screen 或/ebook ,它会正常,但在使用/printer 或/prepress 时则不行。由于质量原因,/screen 和/ebook 不行。

我试图了解电子书和打印机的区别。

/电子书

gs   -q   -dNODISPLAY   -c ".distillersettings /ebook get {exch ==only ( ) print ===} forall quit" | sort

给予:

/AutoRotatePages /All
/CannotEmbedFontPolicy /Warning
/ColorACSImageDict << /Blend 1 /HSamples [2 1 1 2] /VSamples [2 1 1 2] /QFactor 0.76 /ColorTransform 1 >>
/ColorConversionStrategy /sRGB
/ColorImageDownsampleType /Average
/ColorImageResolution 150
/CompatibilityLevel 1.5
/CreateJobTicket false
/DoThumbnails false
/EmbedAllFonts true
/GrayACSImageDict << /Blend 1 /HSamples [2 1 1 2] /VSamples [2 1 1 2] /QFactor 0.76 /ColorTransform 1 >>
/GrayImageDownsampleType /Average
/GrayImageResolution 150
/MonoImageDownsampleType /Subsample
/MonoImageResolution 300
/NeverEmbed [/Courier /Courier-Bold /Courier-Oblique /Courier-BoldOblique /Helvetica /Helvetica-Bold /Helvetica-Oblique /Helvetica-BoldOblique /Times-Roman /Times-Bold /Times-Italic /Times-BoldItalic /Symbol /ZapfDingbats]
/PreserveEPSInfo false
/PreserveOPIComments false
/PreserveOverprintSettings false
/UCRandBGInfo /Remove

和/打印机

gs   -q   -dNODISPLAY   -c ".distillersettings /ebook get {exch ==only ( ) print ===} forall quit" | sort

给予:

/AutoRotatePages /None
/CannotEmbedFontPolicy /Warning
/ColorACSImageDict << /Blend 1 /HSamples [1 1 1 1] /VSamples [1 1 1 1] /QFactor 0.4 /ColorTransform 1 >>
/ColorConversionStrategy /UseDeviceIndependentColor
/ColorImageDownsampleType /Average
/ColorImageResolution 300
/CompatibilityLevel 1.7
/CreateJobTicket true
/DoThumbnails false
/EmbedAllFonts true
/GrayACSImageDict << /Blend 1 /HSamples [1 1 1 1] /VSamples [1 1 1 1] /QFactor 0.4 /ColorTransform 1 >>
/GrayImageDownsampleType /Average
/GrayImageResolution 300
/MonoImageDownsampleType /Subsample
/MonoImageResolution 1200
/NeverEmbed []
/PreserveEPSInfo true
/PreserveOPIComments true
/PreserveOverprintSettings true
/UCRandBGInfo /Preserve

现在,我在想是否可以将/ebook 设置放入命令行参数中,并一一调整或删除,直到找到使 pdf rip 正常的正确命令。 正如我从网上的示例中看到的, -dAutoRotatePages=/None 是一个正确的参数。将“-d”与“=”一起添加看起来是正确的吗? 此外,NeverEmbed、ColorACSImageDict 和 GrayACSImageDict 必须从“-c”调用 ( https://www.ghostscript.com/doc/9.22/VectorDevices.htm#note_13 )

编辑:基于 KenS 指南的新命令:

gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite
-dAutoRotatePages=/All \
-dCannotEmbedFontPolicy=/Warning \
-dColorConversionStrategy=/sRGB \
-dColorImageDownsampleType=/Average \
-dColorImageResolution=150 \
-dCompatibilityLevel=1.5 \
-dCreateJobTicket=false \
-dDoThumbnails=false \
-dEmbedAllFonts=true \
-dGrayImageDownsampleType=/Average \
-dGrayImageResolution=150 \
-dMonoImageDownsampleType=/Subsample \
-dMonoImageResolution=300 \
-dPreserveEPSInfo=false \
-dPreserveOPIComments=false \
-dPreserveOverprintSettings=false \
-dUCRandBGInfo=/Remove \
-sOutputFile=final_output.pdf \
-c '<</ColorACSImageDict << /Blend 1 /HSamples [2 1 1 2] /VSamples [2 1 1 2] /QFactor 0.76 /ColorTransform 1 >>  <</GrayACSImageDict << /Blend 1 /HSamples [2 1 1 2] /VSamples [2 1 1 2] /QFactor 0.76 /ColorTransform 1 >> <</NeverEmbed [/Courier /Courier-Bold /Courier-Oblique /Courier-BoldOblique /Helvetica /Helvetica-Bold /Helvetica-Oblique /Helvetica-BoldOblique /Times-Roman /Times-Bold /Times-Italic /Times-BoldItalic /Symbol /ZapfDingbats] >> setdistillerparams' \
-f outlined_output.pdf

此命令生成的 pdf 仍然卡住。那么我做错了什么,是不是某个地方的格式错误? 参数应该如何与/ebook 完全相同?

有人对/ebook 和/printer 之间可能导致 pdf 卡在撕裂处的差异有直接建议吗?

致以诚挚的问候 尼古拉斯

最佳答案

PDFSETTINGS 包含在 Ghostpdl/Resource/Init/gs_pdfwr.ps 中,因此您可以看到它们是如何设置的。

您不需要(也不应该)将每段 PostScript 放入其自己的 -c/-f 括号中。用-c打开PostScript,发送你想要的PostScript程序,然后用-f关闭它。

不要使用 .setpdfwrite,或者如果必须的话,也不要多次使用它,那不会有任何帮助。

我的建议是使用最后一个命令行,然后每次删除命令,直到文件正常工作。然后您就会知道哪个设置给您带来了问题。

我还建议,一旦您知道这一点,您就可以打开一个错误报告,其中包含显示问题的样本文件和命令行,以便有人可以修复它....

就其值(value)而言,如果 Acrobat 能够毫无问题地打开 Ghostscript 生成的文件,这对我来说听起来像是 PDF 用户的问题。您可以向制造商报告该问题,以便他们也可以解决问题。

[编辑]

如果我理解正确的话,当您将该 PDF 发送给“其他 PDF 用户”时,由 Ghostscript 生成的 PDF 会“卡住”。

因此,您真正需要做的是确定设备到底不喜欢什么。

我假设如果您使用不带参数的 pdfwrite (例如 gs -sDEVICE=pdfwrite -o out.pdf <input.pdf> ),生成的 PDF 文件会按预期工作?

假设确实如此,并且您有一个命令行(在上面的编辑中)会生成一个不起作用的 PDF 文件,您可以一一删除这些开关,直到得到一个开始工作的文件。将最后拆下的开关放回原位,并将其余的一一拆下。理想情况下,您最终应该得到一个会给其他消费者带来问题的开关。

此时,采用您想要的 PDFSETTINGS 并单独应用每个开关,或设置 -dPDFSETTINGS然后通过在设置 PDFSETTINGS 后进行设置来关闭导致问题的控件。

关于pdf - Ghostscript - 将 "pdfsettings=/ebook"放入各个参数中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54289570/

相关文章:

php - TCPDF - AJAX - 下载文件而不将其从 AJAX 调用保存到网络服务器

c# - 将图像导出为 PDF

linux - Ghostscript:在不使用文件系统的情况下将 PDF 转换为其他文件类型

c# - 如何使用 C# 按文件大小拆分 PDF 文件?

javascript - 使用附加文件设置按钮图标

c# - 如何使用带有 C# 或 VB.NET 的 Acrobat SDK 从文件创建 PDF?

javascript - 如果 src = pdf,如何从 IFRAME 打印 PDF?

python - 如何保存占据PDF文件整页的情节

php - 想象异常 : Postscript delegate failed imagick IIS

pdf - 在一次调用中使用 Ghostscript 将多个 pdf 转换为 tiff,并保留对原始文件的引用