Am 25.06.2015 um 18:56 schrieb Pierre Dubillot:
I'm having an issue while trying to create an image output :

java.io.IOException: RandomAccessBuffer already closed
at
org.apache.pdfbox.io.RandomAccessBuffer.checkClosed(RandomAccessBuffer.java:433)
at
org.apache.pdfbox.io.RandomAccessBuffer.length(RandomAccessBuffer.java:292)
at org.apache.pdfbox.cos.COSStream.copyBuffer(COSStream.java:361)
at org.apache.pdfbox.cos.COSStream.doDecode(COSStream.java:334)
at
org.apache.pdfbox.cos.COSStream.checkUnfilteredBuffer(COSStream.java:265)
at org.apache.pdfbox.cos.COSStream.getUnfilteredStream(COSStream.java:214)
at
org.apache.pdfbox.pdmodel.common.PDStream.createInputStream(PDStream.java:232)
at
org.apache.pdfbox.pdmodel.graphics.color.PDICCBased.loadICCProfile(PDICCBased.java:115)
at
org.apache.pdfbox.pdmodel.graphics.color.PDICCBased.<init>(PDICCBased.java:89)
at
org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace.create(PDColorSpace.java:160)
at
org.apache.pdfbox.pdmodel.PDResources.getColorSpace(PDResources.java:111)
at
org.apache.pdfbox.contentstream.operator.color.SetNonStrokingColorSpace.process(SetNonStrokingColorSpace.java:41)
at
org.apache.pdfbox.contentstream.PDFStreamEngine.processOperator(PDFStreamEngine.java:795)
at
org.apache.pdfbox.contentstream.PDFStreamEngine.processStreamOperators(PDFStreamEngine.java:462)
at
org.apache.pdfbox.contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:438)
at
org.apache.pdfbox.contentstream.PDFStreamEngine.processPage(PDFStreamEngine.java:149)
at org.apache.pdfbox.rendering.PageDrawer.drawPage(PageDrawer.java:180)
at org.apache.pdfbox.rendering.PDFRenderer.renderPage(PDFRenderer.java:205)
at
org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:136)
at
org.apache.pdfbox.rendering.PDFRenderer.renderImageWithDPI(PDFRenderer.java:81)
at metier.parseur.ParserPDF.pdfImgsToXml(ParserPDF.java:62)
at metier.parseur.ParserPDF.preLoad(ParserPDF.java:45)
at metier.MetierLoader.getPage(MetierLoader.java:34)
at action.ActionLoader.chargerPage(ActionLoader.java:15)
at action.ActionSora.doPost(ActionSora.java:35)

With the following code :

private static String pdfImgsToXml() throws IOException {
int pageNumber = 1;

String imgs = "<imgs>\n";

PDFRenderer renderer = new PDFRenderer(pdf);

int numPages = pdf.getNumberOfPages();

for (int i = 0; i < numPages; i++) {

imgs = imgs + "<img" + pageNumber + ">";

try {

BufferedImage image = renderer.renderImageWithDPI(i, 200);

ByteArrayOutputStream baos = new ByteArrayOutputStream();

ImageIO.write( image, "jpg", baos );

baos.flush();

byte[] imageInByte = baos.toByteArray();

baos.close();

String imgString = Base64.encode(imageInByte);

imgs = imgs + imgString + "</img" + pageNumber + ">\n";

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

  pageNumber++;

}

  return imgs + "</imgs>";

}


My app is running on a Java EE Server, trying to write rendered images to
byte array to put them in XML.
But first I need to render them, and that's not working.

Thanks,
Pierre


The code works fine for me.

However you didn't show how the "pdf" object is closed. Be aware that PDFBox doesn't support multithreading, i.e. one PDDocument object should be used only by one thread.

Tilman


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to