pdf - 如何禁用图像和路径的 ghostscipt 光栅化?
问题描述
我需要将 PDF 转换为不同的 ICC 颜色配置文件。通过不同的搜索和测试,我找到了一种方法:
首先,我将我的 PDF 转换为 PS 文件:
.\gswin64c.exe -dNOPAUSE -dBATCH -sDEVICE=ps2write -sOutputFile="test.ps" "test.pdf"
然后我使用以下内容将 PS 转换回 PDF(这是为了生成有效的 PDF/X-3 文件):
.\gswin64c.exe -dPDFX -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sColorConversionStrategy=/UseDeviceIndependentColor -sProcessColorModel=DeviceCMYK -dColorAccuracy=2 -dRenderIntent=0 -sOutputICCProfile="WebCoatedSWOP2006Grade5.icc" -dDeviceGrayToK=true -sOutputFile="final.pdf" test_PDFX_def.ps test.ps
ICC 配置文件已嵌入,一切正常。唯一的问题是整个最终 PDF 都被光栅化了。在这里,我失去了起始文件中的所有路径和其他矢量元素质量。我需要保持它们是矢量的,因为这个 PDF 将有一个特定的应用程序。
解决方案
第一步不要转换为 PostScript !!!
如果您这样做,则必须呈现任何透明标记操作,因为 PostScript 不支持透明度。其他功能也会丢失,所以真的,不要那样做。Ghostscript的输入输出端或多或少是独立的;pdfwrite 设备不知道输入是 PDF 还是 PostScript,并且不在乎。因此,您无需在将 PDF 文件作为输入发送之前将其转换为 PostScript。
您可以将原始 PDF 文件输入第二个命令行来代替 PostScript 文件。
只要您制作 PDF/X-3 或更高版本,就会保留透明度。确保您使用的是最新版本的 Ghostscript。
推荐阅读
- android - 我的 Kotlin 项目没有在资源中创建导航文件夹
- python - 如何在 IBKR python API 中获得纳斯达克的开盘价?
- c# - 如何在 ASCX 页面上的 ASP 网站上从 C# 代码执行 url 调用?
- macos - 是否有 API 可以检查 Mac 的麦克风或摄像机是否正在使用?
- ios - 如何在 iOS swift WKWebview 中清除特定缓存
- javascript - DiscordJS 在语音通道上播放音频文件
- python - 使用不是符号张量的输入调用层连接
- php - API PHP 读取 JSON 的问题
- javascript - MongoError:拓扑已关闭,请在创建新文档后连接
- c - 为什么我们声明 2d 数组具有基于 1 的索引,但我们在 C 语言中使用基于 0 的索引访问数组?