Как исправить ошибку GraphicsMagik (преобразование gm: Нет делегата декодирования для этого формата изображения)

#javascript #node.js #imagemagick

Вопрос:

Поэтому я пытаюсь создать небольшое приложение, которое принимает 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:UsersYosse_MAppDataLocalTempgmRuQc4v).

    at ChildProcess.onExit (D:DevsNodeJSapp07-pdf2pic-testnode_modulesgmlibcommand.js:301:17)
    at ChildProcess.emit (events.js:315:20)
    at ChildProcess.cp.emit (D:DevsNodeJSapp07-pdf2pic-testnode_modulescross-spawnlibenoent.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-версия:

 C:UsersYosse_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
 

Я понятия не имею, как решить эту проблему, могу ли я, пожалуйста, получить несколько советов.

Пожалуйста, если вам нужна дополнительная информация, дайте мне знать.

Спасибо

Комментарии:

1. Привет! Вы нашли решение? Вы можете мне помочь, пожалуйста? У меня та же проблема)

2. @AnastassiyaGrinvald Я очень сожалею о позднем ответе, я не уверен, что вы уже исправили свою проблему, В любом случае, я перестал использовать Graphicsmagick и пакет pdf2pic и использовал Imagemagick, когда вы его устанавливаете, вы получаете команду «конвертировать», которая может конвертировать pdf в изображения, поэтому я просто выполнил эту команду из своего приложения node с помощью «exec ()».

Ответ №1:

Я тоже боролся с «проблемой делегата pdf GM». И я узнал, что GraphicsMagick использует шрифты Ghostscript (также известные как «Шрифты URW») для поддержки стандартного набора шрифтов Adobe Postscript, таких как «Helvetica» и «Times Roman». Загрузите шрифты отсюда Шрифты Ghostscript и вставьте загруженные шрифты в папку с файлами Ghostscript C:Program Filesgsgs9.52. Здесь вы можете найти более подробную информацию. введите описание изображения здесь

 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);

}