R 4.2.1是否有PDF/A合规PDF输出设备?及R图形合规方案问询
如何用R生成符合PDF/A标准的图形文件?
测试过程与验证结果
R代码示例
使用Cairo包和基础PDF设备生成图形的代码如下:
> library("Cairo") > pdf(file="pdf1.pdf") > plot( 1:10, 1:10, type="b") > dev.off() null device 1 > library("Cairo") > CairoPDF(file="cairo1.pdf") > plot( 1:10, 1:10, type="b") > dev.off() null device 1
veraPDF验证结果
用veraPDF对生成的两个PDF文件进行合规性验证,结果如下:
$ verapdf --verbose --format text pdf1.pdf FAIL ./pdf1.pdf FAIL 6.1.3-1 FAIL 6.7.3-6 FAIL 6.3.4-1 FAIL 6.7.2-1 FAIL 6.7.3-2 FAIL 6.7.3-7 FAIL 6.1.7-2 $ verapdf --verbose --format text cairo1.pdf FAIL ./cairo1.pdf FAIL 6.1.3-1 FAIL 6.7.2-1 FAIL 6.2.3.3-1 FAIL 6.4-3 FAIL 6.7.3-7
注:上述错误对应PDF/A-1的合规要求(veraPDF存在偶发bug)。
核心问题
R是否具备原生支持生成PDF/A合规图形的输出设备?目前测试发现包括Cairo在内的R默认PDF输出均不符合PDF/A标准,请问如何通过R图形输出得到符合PDF/A合规要求的文件?
测试更新记录
更新1
使用ggsave同样无法生成符合PDF/A标准的文件。
更新2
kdp工具在处理含透明内容的PDF时失效。针对Cairo输出的临时修复方案:
gs -o $out -sDEVICE=pdfwrite -dCompatibilityLevel=1.3 $in
该命令可修复透明相关的错误[6.4-3],但会引入新的合规错误(6.3.7-3、6.1.8-1、6.1.7-2),且因光栅化导致文件体积大幅增加。如果CairoPDF能提供完全禁用透明的选项,该问题将得到显著改善;基础pdf()设备输出无透明内容,但需要额外处理字体等合规问题。
更新3(当前最优方案)
使用Ghostscript的PDF/A转换命令:
# gs -dPDFA -dNOPAUSE -dBATCH -sOutputFile="out.pdf" \ -sDEVICE=pdfwrite -dCompatibilityLevel=1.3 in.pdf
该命令可解决大部分合规问题,仅残留6.2.3.3-1错误。但存在不一致性:部分文件处理后显示正常,部分则会被光栅化且体积变大,具体原因暂不明确。
内容的提问来源于stack exchange,提问作者ivo Welch
相关产品推荐
相关产品推荐

