使用JavaScript从PDF文件中提取图像
我想编写JavaScript代码,从PDF文件中提取所有图像文件,也许可以将它们作为JPG或其他图像格式。已经有一些JavaScript代码用于读取PDF文件,例如在PDF查看器中使用JavaScript从PDF文件中提取图像,javascript,pdf,Javascript,Pdf,我想编写JavaScript代码,从PDF文件中提取所有图像文件,也许可以将它们作为JPG或其他图像格式。已经有一些JavaScript代码用于读取PDF文件,例如在PDF查看器中 我可以使用此代码来帮助读取和提取图像文件吗?例如,如果使用pdf.js打开页面 PDFJS.getDocument({url: <pdf file>}).then(function (doc) { doc.getPage(1).then(function (page) { wind
我可以使用此代码来帮助读取和提取图像文件吗?例如,如果使用
pdf.js
打开页面
PDFJS.getDocument({url: <pdf file>}).then(function (doc) {
doc.getPage(1).then(function (page) {
window.page = page;
})
})
现在,args
将有一个您需要从该页面获取的资源列表
console.log(window.args.map(function (a) { page.objs.get(a) }))
应该向控制台打印一组属性。这些可以直接插入到页面中,也可以执行更多脚本来获取原始数据
它只适用于嵌入式JPEG对象,但这只是一个开始 这应该行得通。但是正确的代码现在在这里:function loadJpegStream
Typos。提取图像文件并对其执行一些操作(如调整图像大小)后,更改为i
和PDFJS.ops.paintJpegXObject
@JasonSiefken,如何将其插入文件以替换文件中的现有图像?谢谢如果在加载图像之前调用page.objs.get()
,则会出现错误。为了安全起见,将回调作为第二个参数传递给get()
,而不是依赖于返回值。工作示例:与paintJpegXObject比较一起,还可以检查paintImageXObject。这在我的例子中起作用,可能是因为pdf包含png对象。关于paintImageXObject
.png和其他类型,它给出了uint8clampedaray
现在将uint8clampedaray数组转换为image是一个新的挑战:)
window.objs = []
page.getOperatorList().then(function (ops) {
for (var i=0; i < ops.fnArray.length; i++) {
if (ops.fnArray[i] == PDFJS.OPS.paintJpegXObject) {
window.objs.push(ops.argsArray[i][0])
}
}
})
console.log(window.args.map(function (a) { page.objs.get(a) }))