【问题标题】:Remove white border in image using Ghostscript使用 Ghostscript 删除图像中的白色边框
【发布时间】:2012-09-14 16:01:27
【问题描述】:

我需要使用 PHP 将 PDF 文件解析为图像。我在 Ghostscript 的帮助下完成了它。这是脚本:

$result = exec("gs -sDEVICE=png16m -sOutputFile=page-%03d.png $pdfname.pdf");

但几乎所有最终图像都有白色边框(PDF 页面没有这些边框)。怎样才能摆脱它们?也许 Ghostcript 代码中有一些我找不到但会有所帮助的方法。
这是一张图片 -> http://www.pictureshack.ru/images/88046_page-009.png
这是 PDF 文件的打印屏幕 -> http://www.pictureshack.ru/images/62869_pdf.PNG

【问题讨论】:

  • 您能否提供显示您描述的白色边框的示例 PDF 和 JPEG 文件?
  • 我编辑了一篇文章,您可以在其中找到示例
  • PDF 的打印屏幕不够好。我需要查看/MediaBox/ArtBox/TrimBox/CropBox/BleedBox 的值,因此需要查看 PDF 本身。从PDF中提取的有图片的一页可能就足够了......
  • 我真的不知道你所说的 /MediaBox、/ArtBox、/TrimBox、/CropBox 和 /BleedBox 是什么意思...我如何从 PDF 中提取一页?我会给你整个 PDF 文件,但我不能分发它......
  • 您可以使用命令行工具pdftk.exe从PDF中提取页面。提取第 9 页:pdftk Esquire.pdf cat 9 output p9.pdf.

标签: php pdf border ghostscript


【解决方案1】:

Pigalev Pavel 应该给出他如何解决问题的真正答案。一种可能性是他必须使用类似的东西:

gs                           \
  -sDEVICE=png16m            \
  -sOutputFile=page-%03d.png \
  -dUseTrimBox               \
   file.pdf

gs                           \
  -sDEVICE=png16m            \
  -sOutputFile=page-%03d.png \
  -dUseCropBox               \
   file.pdf

【讨论】:

    【解决方案2】:

    我建议您的页面定义一个比 MediaBox 小的 CropBox。您可以通过在命令行上提供 -dUseCropBox 开关来告诉 Ghostscript 使用 CropBox。

    当然,正如库尔特所说,不看原始文件是无法判断的。

    【讨论】:

    • 你能告诉我那些 Mediabox 和 Crobbox 是什么吗?或者可能是它所写的链接。你说你需要一个原始文件,为什么?你会在其中看到什么?如果你解释一下,也许我可以检查一下
    • 你是个天才!!!非常感谢!你的建议完全正确!谢谢!
    • @PigalevPavel:如果要对 PDF 问题给出明确的答案,最好访问示例文件。其他一切都只是纯粹的猜测。
    • 我理解,但我只是不知道如何在不裁剪或打印屏幕的情况下制作 PDF 文件...无论如何,这个建议是正确的,这正是我所需要的。顺便说一句,库尔特感谢您的帮助!
    • 感谢您,如果它可以帮助任何人使用 Imagemagick 执行此操作,您需要在行首添加定义。例如转换 -define pdf:use-cropbox=true -density %DENSITY% "%SOURCEPDF%" %GENERATEDLARGEPNG%