Как получить изображение в виде потока из PDF-файла с помощью Hummus.js?

Я пытаюсь извлечь поток / буфер изображения PNG из PDF. Я могу получить объект ePDFObjectName, но любая попытка фактически получить базовый ссылочный поток приводит к segfault.

По сути, я превратил один из авторских тестов в класс, вынул часть логгера и добавил метод findComponentInPDFDictionary,

Мой класс создается с двумя аргументами: - componentType = имя значения PDFName, которое я ищу (в данном случае "Изображение") - callback = предоставленный обратный вызов, по которому я надеялся получить возможность получить поток.

вот сокращенный пример:

module.exports = function findPDFPage (componentType, callback) {
  let _this = this

  ...

  function findComponentInPDFDictionary (aDictionary, inReader) {
    const dict = aDictionary.toJSObject()
    Object.getOwnPropertyNames(dict).forEach(
      function (element, index, array) {
        if (componentType !== 'all' && callback &&
          dict[element].value &&
          typeof dict[element].value === 'string' &&
          dict[element].value.search(componentType) > -1) {
          if (aDictionary.exists(element)) {
            // DO SOMETHING WITH THE REQUESTED COMPONENT TYPE HERE
            // E.G. componentType = 'Image'
            // vvvvvvvvvvvvvvvvvvvvvvvvvvv
            callback(
              inReader.queryDictionaryObject(aDictionary, element),
              aDictionary, inReader)
          }
        } else _this.iterateObjectTypes(dict[element], inReader)
      })
    }

    ...

  this.iterateObjectTypes = function (inObject, inReader) {
    ... logic that recursively iterates through different PDF objects
    switch (inObject.getType()) {
      case hummus.ePDFObjectDictionary:
        findComponentInPDFDictionary(inObject.toPDFDictionary(), inReader) 
        break

      case ...

      ...

  }
}

Я пытался преобразовать значение из inReader.queryDictionaryObject(aDictionary, element) в кучу разных типов, и оно каждый раз просто вызывает ошибки!

документация Hummus.js о разборе немного расплывчата относительно того, поддерживает ли он доступ к потокам изображений; но я бы предположил, что изображение все еще существует так

Пожалуйста, возможно ли получить этот поток? И если да, то как?

0 ответов

Другие вопросы по тегам