Hi, > Am 17.05.2017 um 09:30 schrieb Martin Lynch <[email protected]>: > > Hi > > I am using PDFBox 2.0.3 > > I need to return the byte array representation of a PDDocument without saving > it to disk, but I always get a zero length byte array. > > My method loads a file and creates a PDDocument from it. It the modifies this > document by adding in extra pages and finally I want to return the byte array > of the modified document. > > If I add report.save(new Fille("Some Path")) then the modified document is > correctly saved (but I don't want to do this) - how do I get a valid byte > array returned? > > Thanks for your help > Martin > > Here is my code > > URI origReport = > ClassLoader.getSystemResource("pdf/FullInvestmentReport.pdf").toURI(); > > byte[] origReportAsBytes = Files.readAllBytes(Paths.get(origReport)); > > PDDocument report = PDDocument.load(origReportAsBytes); > > > > URI location1 = ClassLoader.getSystemResource("pdf/AddFile1.pdf").toURI(); > > byte[] data1 = Files.readAllBytes(Paths.get(location1)); > > PDDocument docToAdd = PDDocument.load(data1); > > > > int currentPage = 3; > > if (docToAdd != null) { > for (int i = 0; i < docToAdd.getNumberOfPages(); i++) { > originalReport.getPages().insertAfter(docToAdd.getPage(i), > report.getPage(newCurrentPage++)); > } > } > > > > byte[] aggregatedReport = new PDStream(report).toByteArray();
that's creating a new stream inside the PDF which is a PDF object. That's not the PDF document you are looking for. Write the PDF to a ByteArrayOutputStream like so ByteArrayOutputStream output = new ByteArrayOutputStream(); PDDocument,save(output) byte[] aggregatedReport = output.toByteArray(); BR Maruan > > > > return aggregatedReport; > > > > Martin Lynch | Senior Software Engineer | Kainos | DD: +44 (0)28 9057 1351 | > Fax: +44 (0)28 9057 1101 | [email protected]<mailto:[email protected]> > > > [Sunday > Times]<https://www.kainos.com/kainos-cements-position-sunday-times-top-100-best-companies-work/> > > Follow the Kainos buzz on: Twitter<https://twitter.com/kainossoftware> > Facebook<https://www.facebook.com/KainosSoftware> > Linkedin<http://www.linkedin.com/company/kainos> > Youtube<http://www.youtube.com/user/KainosSoftware> Kainos cements position > sunday times top 100 best companies > work<https://www.kainos.com/kainos-cements-position-sunday-times-top-100-best-companies-work/> > > This e-mail is for the intended addressee only and is strictly confidential; > if you receive it in error please destroy the message and all copies. Any > opinion or information in this email or its attachments that does not relate > to Kainos business is personal to the sender and is not endorsed by Kainos. > This email has been scanned for viruses but is not guaranteed to be virus > free. "Kainos" is the trading name of the Kainos Group of companies; click > the link for further information > https://www.kainos.com/corporate-information/. Further terms and conditions > may be found on our website www.kainos.com --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]

