所以我现在面临的问题如下。
在我们项目的工作中,我们有一个系统,用于阅读pdf-s并打印它们。现在所有这一切似乎都在起作用,但是当我试图打印静态pdf-s时,我发现错误 startxref未找到 ...我已经检查了pdf-s,他们似乎顺序。 startxref引用位于文件末尾。 我发现奇怪的是它有更多的EOF-s和startxref-s。
但那是因为Adobe。因为它在前一个版本之后附加了较新版本的PDF。
我们正在使用org.apache.pdfbox.pdmodel.PDDocument
加载文件。但没有任何内容被填满。没有预告片没有startxref没有什么。它只是无法读取它。
并且所有文件都不会发生。有些PDF-s是版本1.6,有些是1.4。
我怀疑该文件可能已损坏。但不是。通过一些验证器在线检查并检查出来。
在这一点上,我对问题可能是什么一无所知。我现在只是在浪费时间。 任何对此的见解都将非常感激。
这是使用的代码。没什么特别的。但是当试图加载pdf的一部分时没有加载到< pdfTemplate>
PDDocument pdfTemplate = PDDocument.load(file);
PDDocumentCatalog docCatalog = pdfTemplate.getDocumentCatalog();
PDAcroForm acroForm = docCatalog.getAcroForm();
// Get field names
List<PDField> fieldList = acroForm.getFields();
List<PDPage> pages = pdfTemplate.getDocumentCatalog().getAllPages();
process.processPage(company, templateFile, pdfTemplate, acroForm, fieldList, pages, args);
COSDictionary acroFormDict = acroForm.getDictionary();
//((COSArray) acroFormDict.getDictionaryObject("Fields")).clear();
return pdfTemplate;
这是PDF。它只是一个静态PDF,为客户提供一些法律信息。 https://drive.google.com/open?id=0B57cf1nqGbC4SEYtemxwQjFQNkU
更新/修改
我还尝试使用pjx(使用的版本/ jar是pjx-200030817.jar)作为字节数组加载PDF。正如在项目的前一版本中所做的那样(当它工作时)。但结果却同样令人遗憾。 代码如下:
//静态PDF
String pdfFileName = printDescriptor.getPdfFileName();
byte contents[] = IOUtils.toByteArray(context.getResourceAsStream("/" + pdfFileName));
pdfInput = new PdfInputBuffer(ByteBuffer.allocate(contents.length), pdfFileName);
intermediateFiles.add(new PdfManager(new PdfReader(pdfInput)));
提前谢谢!!!如果我在某些方面不够清楚,我会澄清。