使用ImageMagick修改PDF时消除质量问题

使用ImageMagick修改PDF时消除质量问题,pdf,imagemagick,Pdf,Imagemagick,我们的目标是让用户上传PDF文件,并在左上角贴上“图章”(一个背景颜色+文本的框)。“戳记”部分工作得很好,但一旦我们将PDF通过ImageMagick,我们就会立即遇到质量问题——特别是当原始PDF已经有某种人工制品时 这是我的源PDF(出于隐私原因添加的黑色区域)的屏幕截图。 你可以看到质量不是很好,因为它是用复印机扫描的 经过ImageMagick处理后,结果如下所示: 这是正在进行的呼叫: '/usr/bin/convert' +profile '*' -compress jpeg -

我们的目标是让用户上传PDF文件,并在左上角贴上“图章”(一个背景颜色+文本的框)。“戳记”部分工作得很好,但一旦我们将PDF通过ImageMagick,我们就会立即遇到质量问题——特别是当原始PDF已经有某种人工制品时

这是我的源PDF(出于隐私原因添加的黑色区域)的屏幕截图。 你可以看到质量不是很好,因为它是用复印机扫描的

经过ImageMagick处理后,结果如下所示:

这是正在进行的呼叫:

'/usr/bin/convert' +profile '*' -compress jpeg -quality 90 -density 180 -pointsize 10 -fill 'rgba(220, 220, 220, 0.75)' -stroke 'rgba(220, 220, 220, 0.75)' -draw 'rectangle 40,20,491,100' -stroke '#000000' -font Courier -draw "text 48,47 'Vermittlernummer Gesellschaft'" -draw "text 48,81 '70_202_3297'" mysource.pdf mytarget.pdf
  • 如果我省略“-compress jpeg-quality 90”参数,结果看起来是一样的,只是文件大小稍微大一点
  • 如果我忽略“-density 180”参数,结果看起来更糟

ImageMagick的哪些选项可以帮助我获得更好的结果?

请先尝试将pdf转换为png。我之所以这么说是因为我下载了你的.png图像:

并运行您的代码:

  convert -density 180  +profile '*' -compress jpeg -quality 90 -pointsize 10 -fill 'rgba(220, 220, 220, 0.75)' -stroke 'rgba(220, 220, 220, 0.75)' -draw 'rectangle 40,20,491,100' -stroke '#000000' -font Courier -draw "text 48,47 'Vermittlernummer Gesellschaft'" -draw "text 48,81 '70_202_3297'" test.png mytarget.png
得到了这个结果:

我觉得很好。我用你的代码输出了一个.png,但是pdf看起来也一样好——StackOverflow似乎不允许上传pdf

如果不行,请告诉我


干杯。

首先尝试将pdf转换为png。我之所以这么说是因为我下载了你的.png图像:

并运行您的代码:

  convert -density 180  +profile '*' -compress jpeg -quality 90 -pointsize 10 -fill 'rgba(220, 220, 220, 0.75)' -stroke 'rgba(220, 220, 220, 0.75)' -draw 'rectangle 40,20,491,100' -stroke '#000000' -font Courier -draw "text 48,47 'Vermittlernummer Gesellschaft'" -draw "text 48,81 '70_202_3297'" test.png mytarget.png
得到了这个结果:

我觉得很好。我用你的代码输出了一个.png,但是pdf看起来也一样好——StackOverflow似乎不允许上传pdf

如果不行,请告诉我


干杯。

谢谢你的回答。我试图在第一步将PDF转换为PNG,但后来我已经遇到了这些问题。因此,问题似乎与写入的格式无关,而是与“读取”部分有关。您是否尝试在转换中设置-密度?你能在评论中发布你的代码或者更新你的问题吗?谢谢你的回答。我试图在第一步将PDF转换为PNG,但后来我已经遇到了这些问题。因此,问题似乎与写入的格式无关,而是与“读取”部分有关。您是否尝试在转换中设置-密度?你能在评论中发布你的代码或者更新你的问题吗?