导出 PDF 图形,形状轮廓和填充区域不分离

Posted

技术标签:

【中文标题】导出 PDF 图形,形状轮廓和填充区域不分离【英文标题】:Export PDF graphics without shape contours and filling areas becoming separated 【发布时间】:2019-07-26 00:03:19 【问题描述】:

我遇到过很多 PDF 图形的问题(这些图形本身就是嵌入在 PDF 中的 PDF):

在 PDF 查看器中,图形看起来不错,圆形和箭头等形状是实心的,轮廓和填充区域没有分开。

这里是一个例子:pdf

我尝试通过以下任一方式将页面转换为图像:

(A)

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.5 -dPDFSETTINGS=/prepress -dNOPAUSE -dQUIET -dBATCH -sOutputFile=slides_.pdf slides.pdf &&\
convert -density 900 slides_.pdf -scale 3840x2160 output.png

(B)

convert -density 600 slides.pdf -scale 3840x2160 output.png

通过这两种方法,我得到的图像矢量形状具有锯齿状的像素层,将形状的填充和轮廓分开。这可以在第 8 页的全分辨率视图中最好地看到:

有什么办法可以防止这种情况发生吗?例如。在上面共享的页面中,我希望左上角的箭头和填充的白色圆圈是一种纯色。

【问题讨论】:

【参考方案1】:

看来问题出在 imagemagick 转换库上。我无法通过调整convert 参数来解决这个问题,但我可以通过使用另一个库来解决它——更具体地说,poppler。

pdftoppm -png -scale-to-y 2160 -scale-to-x 3840 slides.pdf output

生产的正是我想要的。

【讨论】:

以上是关于导出 PDF 图形,形状轮廓和填充区域不分离的主要内容,如果未能解决你的问题,请参考以下文章

使用无重复图像图案填充形状:不需要的轮廓线

通过将 PDF 中的所有字体字形转换为轮廓形状来替换它们

图像轮廓之形状匹配

CorelDRAW里如何将图片转换成单线条图形(只要图形轮廓)

利用python绘制太阳花

OpenCV实战(15)——轮廓检测详解