Uploaded image for project: 'PDFBox'
  1. PDFBox
  2. PDFBOX-1206

TrueType glyphs render incorrectly

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.6.0, 1.7.0, 2.0.0
    • Fix Version/s: 2.0.0
    • Component/s: Rendering
    • Environment:
      All (tested on OS X and Solaris but believe it affects all platforms), tested java 7 update 1 & update 2

      Description

      I've done a extensive testing of pdfbox under the new Java 7, update 1 & update 2 releases, and am noticing
      severe image quality issues when converting a pdf to an image.

      Attached is the same pdf turned converted to an image under Java 6, then again with Java 7
      with the same code. The Java 7 version looks pretty bad.

      This is with jdk 1.7 update 1 & 2 (for solaris x64, running headless, and OS X running Java 7 preview update 2 with default with no addition vm args to the default java command). I've also tested against
      the latest code in svn (the images below are from the most current version).

      The good image below is from a recent version of the jdk 1.6 (and it has always looked good
      on at least jdk1.5+).

      To test, I used code like this:

      import java.awt.image.BufferedImage;
      import java.io.File;
      import java.io.IOException;
      import javax.imageio.ImageIO;
      import org.apache.pdfbox.pdmodel.PDDocument;
      import org.apache.pdfbox.pdmodel.PDPage;
      
      public final class PdfToImageTest {
      
        public static BufferedImage toBufferedImage(final String pdfFile, final int resolution)
          throws IOException {
          PDDocument document = null;
          try {
            document = PDDocument.load(pdfFile);
            final PDPage page = (PDPage) document.getDocumentCatalog().getAllPages().get(0);
            final BufferedImage result = page.convertToImage(BufferedImage.TYPE_INT_ARGB, resolution);
            return result;
          } finally {
            if (document != null) {
              document.close();
            }
          }
        }
      
        public static void main (String[] args) throws IOException {
          ImageIO.write(toBufferedImage(args[0], 108), "png", new File(args[1]));
        }
      
      }
      

        Attachments

        1. bad-text-rendering-jdk-1.8.jpg
          3 kB
          Jon Wu
        2. bad-text-rendering-jdk-1.8-source.pdf
          40 kB
          Jon Wu
        3. bauer.ttf
          70 kB
          John Hewson
        4. contourRendering.js
          1 kB
          Tilman Hausherr
        5. convertToImage.pdf
          67 kB
          John Hewson
        6. converttoimage.pdf-1.png
          61 kB
          Tilman Hausherr
        7. preflight.png
          130 kB
          John Hewson

          Issue Links

            Activity

              People

              • Assignee:
                tilman Tilman Hausherr
                Reporter:
                asinger Armando Singer
              • Votes:
                3 Vote for this issue
                Watchers:
                6 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: