2012-09-20 62 views
1

嗨我正在尝试阅读由servlet上传的PDF文件。未找到PDF头标签,iText

下面是代码

//out = byte array 
out = readInItem(item); 
fileToUpload = new ByteArrayInputStream(out.toByteArray()); 

Map<String, AcroFields.Item> pdfBoxNames = new HashMap<String, AcroFields.Item>(); 
PdfReader reader = new PdfReader(fileToUpload); 
ByteArrayOutputStream os = new ByteArrayOutputStream(); 
PdfStamper stamper = new PdfStamper(reader, os); 
AcroFields acroFields = stamper.getAcroFields(); 
pdfBoxNames = acroFields.getFields(); 

我的PDF开始喜欢这个PDF%,1.6

的错误消息 产生java.io.IOException:找不到PDF头标识。

+0

我找到了解决方案。 PDFReader只接收从item.openstream()获得的输入流;如果你把它转换成像ByteArrayInputStream这样的东西,它会开始抛出异常。因此,只需提供从上传文件时获得的输入流。 –

+1

你当然也可以用包含PDF字节的字节数组构造PdfReader对象。您不需要创建ByteArrayInputStream。 –

回答

1

面临同样的例外!确保你已经包含TableHeader和一个作家PageEvent为此设置。我只是把它们加起来,这个例外已经消失了!希望它可以帮助你

PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(filePath)); 
TableHeader includeHeader = new TableHeader(); 
writer.setPageEvent(includeHeader);