【发布时间】:2012-06-12 22:03:42
【问题描述】:
我得到了一个InputStream 的压缩文件。然后我将其中的每个文件分开。然后我将相同的byte array 传递给pdfbox,它在内部使用Apace pdf box 1.6.0 将其转换为图像。
但是,当我将 byte array 传递给 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
我做错了什么?你能提出一个解决方案吗?我猜数据字节数组的获取是一个问题。如何做到最好?
【问题讨论】:
标签: java zip bytearray inputstream pdfbox