pdfbox-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Anshul Kayastha <anshulkayas...@gmail.com>
Subject Re: PDFBox - convert image to PDF, PDF resolution
Date Wed, 12 Oct 2016 05:45:17 GMT
Thank you Doug.

You have used JPEGFactory. Curious to know what class would be used if I
also had PNG images along with JPG images. Couldn't find anything called a
PNGFactory.



On Tue, Oct 11, 2016 at 1:47 AM, Doug Smith <dougsmithdev@gmail.com> wrote:

> Hi Anshul,
>
> I made a few changes to make this work. First, I used a modified technique
> to scale the image to the right dimensions. I also used the PDFBox
> JPEGFactory instead of ImageIO to read the image. Lastly, I wrapped
> everything in try-with-resources blocks to make sure what you open is
> closed even if there is an exception.
>
>
> public void convertImgToPDF(String imagePath, String fileName, String
> destDir)
>         throws IOException {
>     try (PDDocument document = new PDDocument();
>          InputStream in = new FileInputStream(imagePath)) {
>         PDImageXObject img   = JPEGFactory.createFromStream(document, in);
>         Dimension scaledSize = getScaledDimension(img.getWidth(),
> img.getHeight());
>         PDPage         page  = new PDPage(new
> PDRectangle(scaledSize.width, scaledSize.height));
>         document.addPage(page);
>         try (PDPageContentStream contentStream = new
> PDPageContentStream(document, page)) {
>             contentStream.drawImage(img, 0, 0, scaledSize.width,
> scaledSize.height);
>         }
>         document.save(destDir + "/" + fileName + ".pdf");
>     }
> }
>
> // 8.5" * 72 points per inch, PDF Units
> private static final int MIN_BOUNDARY = 612;
>
> /**
>  * Using this method to scale images to PDF units, maintaining orientation
> as
>  * landscape or portrait.
>  *
>  * Inspired by a stack overflow post
>  * http://stackoverflow.com/questions/23223716/scaled-
> image-blurry-in-pdfbox
>  */
> private Dimension getScaledDimension(final int originalWidth, final
> int originalHeight) {
>     int newWidth;
>     int newHeight;
>
>     if (originalWidth < originalHeight) {
>         newWidth = MIN_BOUNDARY;
>         // scale height to maintain aspect ratio
>         newHeight = (newWidth * originalHeight) / originalWidth;
>     }
>     else {
>         newHeight = MIN_BOUNDARY;
>         // scale width to maintain aspect ratio
>         newWidth = (newHeight * originalWidth) / originalHeight;
>     }
>
>     return new Dimension(newWidth, newHeight);
> }
>
>
> I hope that helps,
>
> Doug
> --
> http://dougsmithdev.com
>
> On Mon, Oct 10, 2016 at 12:49 PM, Anshul Kayastha <
> anshulkayastha@gmail.com>
> wrote:
>
> > I am using PDFBox v2 to convert jpg images to PDF. JPG image is already
> on
> > the filesystem, so I just pick it up and convert it to PDF. Below is my
> code
> >
> > public void convertImgToPDF(String imagePath, String fileName, String
> destDir) throws IOException {
> >         PDDocument document = new PDDocument();
> >         InputStream in = new FileInputStream(imagePath);
> >         BufferedImage bimg = ImageIO.read(in);
> >         float width = bimg.getWidth();
> >         float height = bimg.getHeight();
> >         PDPage page = new PDPage(new PDRectangle(width, height));
> >         document.addPage(page);
> >         PDImageXObject img = PDImageXObject.createFromFile(imagePath,
> document);
> >         PDPageContentStream contentStream = new
> PDPageContentStream(document, page);
> >         contentStream.drawImage(img, 0, 0);
> >         contentStream.close();
> >         in.close();
> >         document.save(destDir + "/" + fileName + ".pdf");
> >         document.close();
> >     }
> >
> >
> > This code does the conversion just fine. However, I have observed the
> > following in converted PDFs
> >
> >    1. When I open a converted PDF, it opens very slowly (in Acrobat
> >    reader). It seems as it PDF is opening pixel by pixel. If I open any
> other
> >    PDF, it opens fine.
> >    2. The default size in acrobat reader is shown as a smaller value
> >    (like 15% or 26%, screenshot attached) for converted PDFs. Even
> though it
> >    covers 100% of the screen (15% should have implied that I see a much
> >    smaller image, but that is not the case). When I change the size to
> 100%, I
> >    see a highly blurred image which is much larger than the actual image
> and I
> >    have to scroll left/right and top/down to see the complete image.
> >
> > Both these observations make me feel that for some reason the PDF that is
> > getting generated is a much higher resolution than it should have been.
> > Would that be a fair statement? If so, how can I correct this?
> >
> > Also, attached is a sample image that I am trying to convert.
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@pdfbox.apache.org
> > For additional commands, e-mail: users-help@pdfbox.apache.org
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message