如何修复 GraphicsMagik 错误(gm convert: No decode delegate for this image format)

Posted

技术标签:

【中文标题】如何修复 GraphicsMagik 错误(gm convert: No decode delegate for this image format)【英文标题】:How to fix the GraphicsMagik error (gm convert: No decode delegate for this image format) 【发布时间】:2021-03-21 12:18:36 【问题描述】:

所以我正在尝试制作一个小应用程序,它可以获取 PDF 文件并将它们转换为 node.js 中的图片。

我发现 pdf2pic 包非常适合我想做的事情。

因此,按照该软件包中的说明,我安装了 Ghostscript 和 Graphicsmagick,然后安装了该软件包。顺便说一句,我在 Windows 上。

这是我的 node.js 代码:

const  fromPath  = require("pdf2pic");

const options = 
  density: 100,
  saveFilename: "untitled",
  savePath: "./images",
  format: "png",
  width: 600,
  height: 600
;
const storeAsImage = fromPath("test.pdf", options);
const pageToConvertAsImage = 1;

storeAsImage(pageToConvertAsImage).then((resolve) => 
  console.log("Page 1 is now converted as image");

  return resolve;
).catch(error => 
    console.log(error);
);

调整此代码后,我收到此错误:

Error: Command failed: gm convert: No decode delegate for this image format (C:\Users\Yosse_M\AppData\Local\Temp\gmRuQc4v).

    at ChildProcess.onExit (D:\Devs\NodeJS\app07-pdf2pic-test\node_modules\gm\lib\command.js:301:17)
    at ChildProcess.emit (events.js:315:20)
    at ChildProcess.cp.emit (D:\Devs\NodeJS\app07-pdf2pic-test\node_modules\cross-spawn\lib\enoent.js:40:29)
    at maybeClose (internal/child_process.js:1021:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5) 
  code: 1,
  signal: null

这是命令 gm -version 返回的内容:

C:\Users\Yosse_M>gm -version
GraphicsMagick 1.3.36 20201226 Q16 http://www.GraphicsMagick.org/
Copyright (C) 2002-2020 GraphicsMagick Group.
Additional copyrights and licenses apply to this software.
See http://www.GraphicsMagick.org/www/Copyright.html for details.

Feature Support:
  Native Thread Safe         yes
  Large Files (> 32 bit)     yes
  Large Memory (> 32 bit)    yes
  BZIP                       yes
  DPS                        no
  FlashPix                   no
  FreeType                   yes
  Ghostscript (Library)      no
  JBIG                       yes
  JPEG-2000                  yes
  JPEG                       yes
  Little CMS                 yes
  Loadable Modules           yes
  Solaris mtmalloc           no
  Google perftools tcmalloc  no
  OpenMP                     yes (200203 "2.0")
  PNG                        yes
  TIFF                       yes
  TRIO                       no
  Solaris umem               no
  WebP                       yes
  WMF                        yes
  X11                        no
  XML                        yes
  ZLIB                       yes

Windows Build Parameters:

  MSVC Version:            1500

我不知道如何解决这个问题,我能得到一些建议吗?

如果您需要更多信息,请告诉我。

谢谢

【问题讨论】:

嗨!你找到解决办法了吗?你能帮我吗?我有同样的问题) @AnastassiyaGrinvald 对于迟到的答案我感到非常抱歉,我不确定你是否已经解决了你的问题,无论如何我所做的是我停止使用 Graphicsmagick 和 pdf2pic 包,并使用Imagemagick,当你安装它时,你会得到一个可以将 pdf 转换为图片的命令“convert”,所以我只是直接从我的节点应用程序中使用“exec()”执行了该命令 【参考方案1】:

我也在为“GM 的 pdf 委托问题”而苦苦挣扎。我发现 GraphicsMagick 使用 Ghostscript 字体(也称为“URW 字体”)来支持标准的 Adob​​e Postscript 字体集,如“Helvetica”和“Times Roman”。 从此处Ghostscript Fonts 下载字体并将下载的文件夹字体粘贴到包含 Ghostscript 文件 C:Program Files\gs\gs9.52 的文件夹中。 Here您可以找到更多信息。

const  fromPath  = require("pdf2pic");

const options = 
  density: 100,
  saveFilename: "untitled",
  savePath: "./images",
  format: "png",
  width: 600,
  height: 600
;

try 
    const convert = fromPath("test.pdf", options);
    await convert.bulk(-1);
 catch (error) 
    console.log(error);

【讨论】:

以上是关于如何修复 GraphicsMagik 错误(gm convert: No decode delegate for this image format)的主要内容,如果未能解决你的问题,请参考以下文章

swift 在Xcode 6 GM + iOS 7.1中修复UICollectionViewCell损坏的自动布局约束

Xcode 7.0.1 - 无效的 Swift 支持 - cocoapods 如何修复?

Xcode6 GM“代码签名错误”

Facebook 登录错误 - Xcode 8 GM

GM 发布 Xcode 6 编译

Xcode 11 GM - 错误:访问构建数据库 - 磁盘 I/O 错误