java-合并文件给出错误:文件结尾,预期行

java-合并文件给出错误:文件结尾,预期行,第1张

概述我正在使用PdfBoxforandroid以便将数据附加到PDF文件.要追加的数据publicbyte[]prerparePdfToAppend(){finalPDDocumentdocument=newPDDocument();finalPDPagesourcePage=newPDPage();document.addPage(sourcePage);PDPageContentStream

我正在使用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-合并文件给出错误:文件结尾,预期行所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1090311.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存