【发布时间】:2017-11-15 03:47:53
【问题描述】:
我想使用 node.js 将 pdf 转换为图像服务器端。我对这个任务的输入是 pdf 的 url,所需的输出是一个 base64 字符串,代表一个图像。
我决定尝试 pdf.js (https://github.com/mozilla/pdf.js) 和 node-canvas (https://github.com/Automattic/node-canvas) - 我的计划是读取 pdf,将其渲染到画布并从画布获取图像的 base64。
但是 pdf.js 在服务器端播放,我创建了一个获取文档任务,如示例中所述:
import pdfjs from 'pdfjs-dist';
const t = pdfjs.getDocument('http://cdn.mozilla.net/pdfjs/helloworld.pdf');
t.promise.then(function (doc) {
console.log('got doc');
console.log(doc);
})
.catch(err => {
console.log(err);
});
但是什么都没有发生。 Promise 既不会解决,也不会拒绝。我怎样才能解决这个问题并让它发挥作用?我究竟做错了什么?
也许还有另一种解决方案,它可以让我在不将其存储到文件系统的情况下获得转换后的图像的 base 64(到目前为止,我见过的节点的所有 pdf 到图像转换器都将图像保存到驱动器,但这不是所需的行为我)?
【问题讨论】:
-
PDF.js 不知道node.js I/O apis -- 自己下载pdf并使用getDocument({data: updatedData}) 打开PDF
-
@async5 非常感谢!这有帮助。很抱歉打扰您,但我的情况看起来非常相似,但现在使用渲染 api - stackoverflow.com/questions/44800345/… 也许,您有什么想法吗? (节点画布本身工作正常,我已经检查过)
-
@async5 - 虽然 pdf.js 可以选择渲染到节点中的图像,但它非常有限 - 我遇到了很多问题,它没有渲染所有文本(因为它需要画布,而节点的模拟画布并不能完全满足 pdf.js 所需的一切)。如果您考虑在生产环境中使用它,这种方法非常不可靠。
标签: javascript node.js pdf pdf.js