r - Windows 中的 PDF 展平

标签 r pdf ggplot2 printing

我有一个从 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/

相关文章:

r - 准确理解何时 data.table 是对另一个 data.table 的引用(而不是其副本)

r - 预订时可以添加额外的分享 channel 吗?

perl - 如何使用 Perl 和 CAM::PDF 读取 PDF 文档属性?

javascript - 使用 css 和 window.print() 打印特定的 div 在 pdf 的第二页上显示

r - 当两个图表具有相同的 X 轴时,在 x 轴上对齐双折线图和条形图。 ggplot2

r - 光滑的2D表面

r - .jcall(cell, "V", "setCellValue", value) : method setCellValue with signature ([D)V not found when attempting write. xlsx 中的错误

r - 按组计数非零观察值的数量

ios - 生成PDF时如何将图像Url转换为pdf?

r - ggplot2 传递变量以绘制函数