代码之家  ›  专栏  ›  技术社区  ›  Ben

如何使用ImageMagick、Ghostscript、windowsvista/7 x64安装、测试、转换、调整PDF大小

  •  8
  • Ben  · 技术社区  · 14 年前

    2 回复  |  直到 13 年前
        1
  •  39
  •   Community CDub    8 年前

    我刚刚花了三个小时让ImageMagick很好地使用PHP进行PDF到JPG的转换。与其自己在本地记录,我想我应该把它写在这里,所有的流行语和我搞砸的东西,这样下一个noob可以节省一些时间。

    在Windows7x64和Vista x64两个操作系统上测试,使用PHP5.2.8和Apache2.2.11。

    gs871w64.exe ImageMagick-6.6.3-0-Q16-windows-x64-dll.exe .

    做一个ImageMagick的基本安装(我现在就叫它IM)。仔细检查系统路径变量,以确保您可以从任何地方进行即时消息。它应该指向IM目录。将此管路插入测试安装 cmd : convert test.gif test.jpg test.gif ). 工作正常。

    convert test.pdf test.jpg ). 您应该会收到一条关于“gswin32c.exe”、“Postscript delegate failed”和“missing an image filename”的(长)消息。这意味着我找不到一个PDF的'翻译'。你需要鬼剧本。

    安装Ghostscript(我现在称之为GS)。因为某种原因,我不得不做了两次才花了时间。将GS文件夹中的“bin”地址添加到系统变量中。测试安装 gswin32 test.pdf 你应该看到你的文件弹出在GS浏览器。重要提示: gs不起作用 在Windows中( 'gs' is not recognized as an internal or external command, operable program, or batch file. ). 你需要使用 gswin32服务器 .

    回到IM测试: 转换test.pdf test.jpg

    现在转到PHP-编写以下脚本:

    $out = shell_exec("convert blah.pdf blah2.jpg 2>&1");
    echo $out;
    

    这个 2>&1 will move all errors into the standard output

    喘气 我知道,详尽而且可能是基本的。但是一个大概20页半有用线索的有用的总结。

        2
  •  10
  •   AndreKR    8 年前

    史蒂夫已经提供了一个运行的指南 命令行 来自PHP的ImageMagick版本。在有过类似的安装 延伸

    Imagick(PHP扩展)

    然而,这还不够。这个 不包含任何ImageMagick功能和 CORE_RL_... 与扩展捆绑在一起的DLL不完整。你还需要一些ImageMagick版本的dll。

    理论上,这个版本不必精确匹配,但显然是介于ImageMagick 6.8.1和6.8.8之间的函数 MagickGetImageMatte 已从DLL中删除,因此最安全的方法是找到与Imagick扩展构建时完全相同的ImageMagick版本:

    • 在Windows资源管理器中,请参阅捆绑的CORE\u RL\u wand\u0.dll的属性详细信息,以查找此扩展所针对的ImageMagick版本(您还可以在phpinfo中找到此信息。)
    • 下载准确的ImageMagick版本,例如 http://windows.php.net/downloads/pecl/deps/ this guy 对于链接)

    ImageMagick公司。事实上,如果您的路径中碰巧有一个不兼容的ImageMagick,PHP扩展可能会失败。

    鬼书

    这适用于命令行版本的ImageMagick( convert

    为了读取Postscript家族的文件,需要Ghostscript。

    ImageMagick将按照以下步骤找到Ghostscript:

    • 如果有 GS_DLL gswin32.dll ,它将使用该选项并完全忽略代理。
    • 否则它将咨询它的“代表”。似乎有一个硬编码的回退,但您可以通过放置 delegates.xml 旁边 php5(n)ts.dll convert.exe 分别或在 ~\.magick .
    • @PS_Delegate@ 在委托中,它将替换为 gswin32c.exe 然后继续在路径中查找EXE。您可以将此字符串替换为 甚至 gswin64c.exe 那个ImageMagick应该打电话来。