Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JavaScript从PDF文件中提取图像_Javascript_Pdf - Fatal编程技术网

使用JavaScript从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

我想编写JavaScript代码,从PDF文件中提取所有图像文件,也许可以将它们作为JPG或其他图像格式。已经有一些JavaScript代码用于读取PDF文件,例如在PDF查看器中


我可以使用此代码来帮助读取和提取图像文件吗?

例如,如果使用
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) }))