Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ghostscript将pdf页面的整个媒体框呈现为png文件_Pdf_Png_Ghostscript - Fatal编程技术网

使用ghostscript将pdf页面的整个媒体框呈现为png文件

使用ghostscript将pdf页面的整个媒体框呈现为png文件,pdf,png,ghostscript,Pdf,Png,Ghostscript,我正在尝试使用Ghostscript v9.02将PDF页面呈现为png文件。为此,我使用以下命令行: gswin32c.exe-sDEVICE=png16m-o输出文件%d.png mypdf.pdf 当pdf裁剪框与媒体框相同时,此操作正常,但如果裁剪框小于媒体框,则仅显示媒体框,并且pdf页面的边框丢失。 我知道pdf查看器通常只显示裁剪框,但我需要能够在png文件中看到整个媒体页面。 Ghostscript文档表示,默认情况下会呈现文档的媒体框,但在我的情况下,这不起作用。 有人知道如何

我正在尝试使用Ghostscript v9.02将PDF页面呈现为png文件。为此,我使用以下命令行:

gswin32c.exe-sDEVICE=png16m-o输出文件%d.png mypdf.pdf

当pdf裁剪框与媒体框相同时,此操作正常,但如果裁剪框小于媒体框,则仅显示媒体框,并且pdf页面的边框丢失。
我知道pdf查看器通常只显示裁剪框,但我需要能够在png文件中看到整个媒体页面。

Ghostscript文档表示,默认情况下会呈现文档的媒体框,但在我的情况下,这不起作用。 有人知道如何使用ghostscript渲染整个媒体框吗?
对于png文件设备,是否只渲染裁剪框?我是不是忘了一个特别的命令

例如,包含裁剪框外的一些注册标记,这些标记在输出png文件中不存在。有关此pdf的更多信息:

  • 媒体盒:
    • 宽度:667
    • 身高:908分
  • 裁剪框:
    • 宽度:640
    • 身高:851

    • 首先,让我们消除误解。你写道:

      当pdf裁剪框与媒体框相同时,此操作正常,但如果裁剪框小于媒体框,则只显示媒体框,并且pdf页面的边框丢失

      那是不对的。如果CropBox小于MediaBox,则只应显示CropBox(而不是MediaBox)。这正是它的设计初衷。这就是CropBox概念背后的全部理念


      目前,我想不出一个解决方案,可以自动为每个PDF和所有可能存在的值工作(除非你想使用payware)

      要手动处理链接到的PDF,请执行以下操作:

    • 在一个好的文本编辑器中打开PDF(该编辑器不会破坏现有的EOL约定,也不会抱怨文件中的二进制部分)
    • 搜索文件中包含
      /CropBox
      关键字的所有点
    • 因为PDF中只有一个页面,所以应该只能找到一个位置
    • 这可以读作
      /CropBox[12.3456 78.9012 345.67 890.123456]
    • 现在编辑此部分,小心避免添加(或丢失)已存在的字符数:
    • 将该值设置为您想要的值:
      /CropBox[0.000000.00000667.00 908.000000]
      。(您可以使用空格代替我的
      .0000..
      部分,但如果我这样做,SO编辑器将吃掉它们,您将看不到我最初键入的内容…)
    • 以新名称保存文件
    • PDF查看器现在应该显示完整的MediaBox(根据您的规范)
    • 将带有Ghostscript的新文件转换为PNG时,将显示较大的页面

    • 好的,现在Reverse已经将他的问题重新表述为他正在寻找“通用代码”,让我再试一次

      “通用代码”的问题在于,“CropBox”语句有许多“合法”的正式表示形式,可能出现在PDF中。以下所有内容都是可能的、正确的,并为页面的CropBox设置相同的值:

      • /CropBox[1020500700]

      • /CropBox[1020500700]

      • /CropBox[1020500700]

      • /CropBox[1020500700]

      • /CropBox[1020500700]

      • /CropBox[10.00 20.0000 500.0 700]



      • 以上三个步骤都可以很容易地编写脚本,我将留给您自己处理。

        您是否只需要这一个文件?或者你需要它来处理一组更大的文件,每个文件都有(可能)不同的*Box值吗?@pipitas:不幸的是,我需要为所有可能的pdf文件编写一个通用代码,当然每个文件都有不同的*Box值。但是我知道,对于所有的PDF,我都需要处理*Box值。好吧,你对问题的最初描述没有足够清楚地说明这一点。我下面的回答确实解决了您所说的问题。非常感谢您的解决方案,并帮助我更好地理解pdf*框!我本来希望只使用Ghostscript就可以做到这一点,但我想除了修改原始pdf之外,我没有其他解决方案了。@reverse:Phew!在一次投票中就两个答案进行了艰苦的工作!:-):-) /CropBox [ 10 20 500 700 ]
        gswin32c.exe -sDEVICE=png16m -o outputImage_%03d.png output.pdf