gpt4 book ai didi

java - 将 Zip 文件作为 InputStream,然后分离其中的每个文件,然后将其转换为图像。 java 语

转载 作者:行者123 更新时间:2023-12-02 07:45:01 24 4
gpt4 key购买 nike

我正在获取一个 zip 文件作为 InputStream。然后我将其中的每个文件分开。然后我将相同的字节数组传递给 pdfbox它内部使用 Apace pdf box 1.6.0 将其转换为图像。

但是,当我将字节数组传递给PDFDocumentReader时,我收到以下异常 -

SEVERE: expected='endstream' actual='' org.apache.pdfbox.io.PushBackInputStream@44c2beb9
java.io.IOException: expected='endstream' actual='' org.apache.pdfbox.io.PushBackInputStream@44c2beb9
at org.apache.pdfbox.pdfparser.BaseParser.parseCOSStream(BaseParser.java:439)
at org.apache.pdfbox.pdfparser.PDFParser.parseObject(PDFParser.java:530)
at org.apache.pdfbox.pdfparser.PDFParser.parse(PDFParser.java:172)
at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:862)
at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:829)
at org.dopdf.document.read.pdf.PDFDocumentReader.init(PDFDocumentReader.java:98)

要从 zip 中获取每个文件,我使用以下代码 -

    ZipInputStream zis = new ZipInputStream(aZipFile); // aZipFile is byte array
ZipEntry entry;
ArrayList<String> nameOfIgnoredFiles = new ArrayList<String>();
byte data[] = null;
while ((entry = zis.getNextEntry()) != null) {
if (entry.getName().endsWith(".pdf")) {
int dataSize = (int)entry.getSize();
data = new byte[dataSize];
zis.read(data);
// i use data and pass it to the pdf box.
} else {
nameOfIgnoredFiles.add(entry.getName());
}

我在上面获取的data字节数组然后被传递到如下 -

PDFDocumentReader document = new PDFDocumentReader(data); // here i get the error

我做错了什么?你能提出一个解决方案吗?我猜数据字节数组的获取是一个问题。如何做到最好?

最佳答案

您假设 zis.read(data) 填充了缓冲区。检查 API 文档。不能保证这样做。您还假设大小适合 int,并且项目本身适合内存。这些假设均无效。

您确实可以将条目的 InputStream 传递给 pdfbox API 吗?

关于java - 将 Zip 文件作为 InputStream,然后分离其中的每个文件,然后将其转换为图像。 java 语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11005556/

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