[
https://issues.apache.org/jira/browse/PDFBOX-3744?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15957159#comment-15957159
]
Tilman Hausherr commented on PDFBOX-3744:
-----------------------------------------
Additional advice (unrelated):
- QR code as a JPEG is a bad idea. JPEG is not good compressing images with
sharp edges, artefacts may appear, or the compression must be less aggressive.
Investigate whether your QR generator can deliver PNG files, or (better)
bitonal BufferedImages. Then use the CCITTFactory for the best possible
compression.
- your MediaBox is likely incorrect, the values are not pixels, they are 1/72
of an inch.
> Can't see images on PDF when using ByteArrayOutputStream
> --------------------------------------------------------
>
> Key: PDFBOX-3744
> URL: https://issues.apache.org/jira/browse/PDFBOX-3744
> Project: PDFBox
> Issue Type: Bug
> Affects Versions: 2.0.5
> Environment: Windows 10 / Linux Centos 6 / Tomcat 8 / Java 8
> Reporter: Julien Keruzec
> Attachments: test.pdf
>
>
> Hello,
> I have a problem generating a PDF file with an image of a QRCode in JPEG
> format.
> When I generate the PDF on file system everyting is fine. PDF is displaying
> all pages with all QR Code images in it.
> As soon as I want to use Outputstream / InputStream my generated PDF result
> in a blank page and I can't see my image anymore.
> You will find an example of a PDF with no image displayed in attachement
> Same thing occured with V1.8.9 of PDFBOX.
> Here's the code I use :
> My images come from a list of InputStream
> {code:java}
> List<InputStream> images
> {code}
> {code:java}
> InputStream is = null;
> ByteArrayOutputStream os = new ByteArrayOutputStream();
> try {
> PDDocument document = new PDDocument();
> for (InputStream image : images) {
> this.addImageToPDF(document, image, width,
> height);
> }
> // File f = new File(System.getProperty("java.io.tmpdir")
> + File.pathSeparator + "test.pdf");
> // document.save(f);
> document.save(os);
> document.close();
>
> is = new ByteArrayInputStream(os.toByteArray());
> {code}
> Generation of page :
> {code:java}
> protected void addImageToPDF(PDDocument document, InputStream image, int
> width, int height) throws IOException {
> PDRectangle pageFormat = null;
> PDPage page = new PDPage();
> PDImageXObject ximage = null;
> ximage = JPEGFactory.createFromStream(document, image);
> if(ximage.getWidth() > ximage.getHeight()){
> pageFormat = new PDRectangle(height,width);
> pageWidthWithMargin = height - 20;
> pageHeightWithMargin = width - 20;
> }
> else{
> pageFormat = new PDRectangle(width,height);
> pageWidthWithMargin = width - 20;
> pageHeightWithMargin = height - 20;
> }
> page.setMediaBox(pageFormat);
> document.addPage(page);
> PDPageContentStream contentStream = new
> PDPageContentStream(document, page);
> float scale = getScale(ximage);
> contentStream.drawImage(ximage, 10, (pageHeightWithMargin+10) -
> ximage.getHeight()*scale,
> ximage.getWidth()*scale,
> ximage.getHeight()*scale);
> contentStream.close();
> }
> {code}
> Can anyone help me on this ?
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]