我有一个从 R/ggplot2 生成的 PDF 文档。它包括几个具有“alpha”或透明度规范的图。 PDF 文件可以愉快地呈现给各种 PDF 阅读器,但在 Windows 中以及当我尝试打印时,PDF 会尝试“拼合”图像。这持续了一段时间,最终(30 页文档需要 1 小时以上)我不得不中止。
此问题之前已报告过,但没有明确的解决方案。 ( Flatten the alpha channel in ggplot2 ) 当我尝试这个解决方案时,R/Bookdown 提示说我试图将 HTML 元素(我怀疑是 PNG)潜入 PDF。
有没有办法对 R/ggplot2 PDF 输出进行后处理,这样当我尝试打印 PDF 时,它就能正常工作?
虽然我最终分发了一个可以在 Windows 环境中打印的 PDF,但我可以将 PDF 从 Windows 移动到 Linux,在那里“修复”PDF,然后将文件重新移植回 Windows 进行打印,...如果只有相关的linux工具。 OSX 也可用。
建议?很难生成打印假脱机问题的可重现示例。
最佳答案
作为对上述 Maurits Evers 回答的评论开始,但评论太大了。
这样做(PDF->PS->PDF)通常(对于透明 PDF 文件)最终会得到一个包含在 PDF 文件中的位图图像。质量下降,不易扩展等。
如果 PDF 文件不包含真正的透明度(例如 Cairo 生成的 PDF,其中所有透明度都是 100% 不透明的),那么您可以使用 Ghostscript 的 pdfwrite 和 -dNOTRANSPARENCY 标志来生成一个新的 PDF 文件,其中所有透明度都具有已被删除。
如果你想保留它,那么唯一的解决办法就是渲染透明区域。但是,我建议将 CompatibilityLevel 设置为 1.3 并使用 pdfwrite 设备,而不是通过 PostScript 进行双重转换。转到 PostScript 只会转储过程中的大量其他内容,而转到 PDF 不太可能发生这种情况。
还有一个名为 pdfimage 的新设备(将在下一个版本中推出),它只是将页面渲染为位图图像,然后写入一个 PDF 文件,其中每个页面都是一个图像。
关于r - Windows 中的 PDF 展平,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48371715/