gpt4 book ai didi

javascript - 试图从 pdf 解压缩外部参照流 - 得到 "ERROR incorrect header check"

转载 作者:行者123 更新时间:2023-12-03 07:05:58 28 4
gpt4 key购买 nike

我正在尝试用 JavaScript 从 PDF 解析外部参照流。我设法成功地隔离了流本身(我通过在 Debug模式下将其与 PDF 中的 steram. 和 endstream 标签之间的值进行比较来检查它是否正常。
但是,当我尝试使用 pako lib 对其进行充气时,我收到一条错误消息:ERROR 不正确的 header 检查。
压缩方式是FlateDecode,从字典中可以看出。
这是有问题的代码:

const dict = pdfStr.slice(pdf.startXRef);
const xrefStreamStart = this.getSubstringIndex(dict, 'stream', 1) + 'stream'.length + 2;
const xrefStreamEnd = this.getSubstringIndex(dict, 'endstream', 1) + 1;
const xrefStream = dict.slice(xrefStreamStart, xrefStreamEnd);
const inflatedXrefStream = pako.inflate(this.str2ab(xrefStream), { to: 'string' });


pdfStr is the whole PDF read as a string, while *pdf.startXRef* holds the value of the position of the xref stream object.
如果有人想看,这里是整个 PDF: https://easyupload.io/lzf9he
编辑:正如 mcernak 所建议的那样,我在流中包含了/r 和/n 的问题。然而,现在我更正了代码,我得到了一个不同的错误:无效距离太远了

最佳答案

流内容位于 stream\r\n 之间和 \r\nendstream .
您需要在开头和结尾考虑这两个附加字符 ( \r\n ) 才能读取正确的数据:

const dict = pdfStr.slice(pdf.startXRef);
const xrefStreamStart = this.getSubstringIndex(dict, 'stream', 1) + 'stream'.length + 2;
const xrefStreamEnd = this.getSubstringIndex(dict, 'endstream', 1) - 2;
const xrefStream = dict.slice(xrefStreamStart, xrefStreamEnd);
const inflatedXrefStream = pako.inflate(this.str2ab(xrefStream), { to: 'string' });

关于javascript - 试图从 pdf 解压缩外部参照流 - 得到 "ERROR incorrect header check",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63872176/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com