我正在使用PdfBox for android以便将数据附加到pdf文件.
要追加的数据
public byte [] prerparepdfToAppend() { final PDdocument document = new PDdocument(); final PDPage sourcePage = new PDPage(); document.addPage(sourcePage); PDPageContentStream contentStream = new PDPageContentStream(document, sourcePage); contentStream.beginText(); contentStream.setFont(PDType1Font.COURIER, 12); contentStream.showtext("name: " + firstname + " " + lastname); contentStream.newline(); ... contentStream.endText(); contentStream.close(); output = new ByteArrayOutputStream(); document.save(output); document.close(); byte [] bytesToAppend = new byte[output.size()]; output.write(bytes); output.close(); return bytesToAppend;}
合并代码(简体)
public voID merge (String assetfilename) { byte [] toAppendpdf = prerparepdfToAppend(); pdfMergerUtility mergerUtility = new pdfMergerUtility(); mergerUtility.addSource(pdfBoxResourceLoader.getStream(assetfilename)); mergerUtility.addSource(new ByteArrayinputStream(toAppendpdf)); mergerUtility.setDestinationStream(destStream); mergerUtility.mergedocuments(); //IOException}
例外
java.io.IOException: Error: End-of-file, expected line at org.apache.pdfBox.pdfparser.BaseParser.readline(BaseParser.java:1419) at org.apache.pdfBox.pdfparser.COSParser.parseheader(COSParser.java:1648) at org.apache.pdfBox.pdfparser.COSParser.parsepdfheader(COSParser.java:1627) at org.apache.pdfBox.pdfparser.pdfParser.parse(pdfParser.java:348) at org.apache.pdfBox.pdmodel.PDdocument.load(PDdocument.java:888) at org.apache.pdfBox.pdmodel.PDdocument.load(PDdocument.java:802) at org.apache.pdfBox.multipdf.pdfMergerUtility.mergedocuments(pdfMergerUtility.java:172)
解决方法:
prerparepdfToAppend方法的最后几行对我来说很奇怪.但是,为什么让您的生活变得复杂?返回PDdocument:
public PDdocument prerparepdfToAppend(){ final PDdocument document = new PDdocument(); final PDPage sourcePage = new PDPage(); document.addPage(sourcePage); PDPageContentStream contentStream = new PDPageContentStream(document, sourcePage); contentStream.beginText(); contentStream.setFont(PDType1Font.COURIER, 12); contentStream.showtext("name: " + firstname + " " + lastname); contentStream.newline(); ... contentStream.endText(); contentStream.close(); return document;}
您的合并代码将如下所示:
public voID merge (String assetfilename){ pdfMergerUtility mergerUtility = new pdfMergerUtility(); PDdocument srcDoc = PDdocument.load(pdfBoxResourceLoader.getStream(assetfilename)); PDdocument dstDoc = prerparepdfToAppend(); mergerUtility.appenddocument(dstDoc, srcDoc); dstDoc.save(destStream); srcDoc.close(); dstDoc.close();}
如果这不起作用-请确保
pdfBoxResourceLoader.getStream(assetfilename)
确实是真正的pdf的流.如果仍然不起作用,请提及此新代码的哪一行会产生异常.当然,请确保您使用的是最新版本的pdfBox.
总结以上是内存溢出为你收集整理的java-合并文件给出错误:文件结尾,预期行全部内容,希望文章能够帮你解决java-合并文件给出错误:文件结尾,预期行所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)