Class PdfBoxGraphics2DFontTextDrawer

    • Field Detail

      • LOGGER

        private static final java.util.logging.Logger LOGGER
      • tempFiles

        private final java.util.List<java.io.File> tempFiles
      • fontMap

        private final java.util.Map<java.lang.String,​org.apache.pdfbox.pdmodel.font.PDFont> fontMap
      • fallbackFontUnknownEncodings

        private org.apache.pdfbox.pdmodel.font.PDFont fallbackFontUnknownEncodings
    • Constructor Detail

      • PdfBoxGraphics2DFontTextDrawer

        public PdfBoxGraphics2DFontTextDrawer()
    • Method Detail

      • close

        public void close()
        Close / delete all resources associated with this drawer. This mainly means deleting all temporary files. You can not use this object after a call to close.

        Calling close multiple times does nothing.

        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
      • registerFont

        public void registerFont​(java.lang.String fontName,
                                 java.io.InputStream fontStream)
                          throws java.io.IOException
        Register a font. If possible, try to use a font file, i.e. registerFont(String, File). This method will lead to the creation of a temporary file which stores the font data.
        Parameters:
        fontName - the name of the font to use. If null, the name is taken from the font.
        fontStream - the input stream of the font. This file must be a ttf/otf file! You have to close the stream outside, this method will not close the stream.
        Throws:
        java.io.IOException - when something goes wrong with reading the font or writing the font to the content stream of the PDF:
      • registerFont

        public void registerFont​(java.lang.String fontName,
                                 java.io.File fontFile)
        Register a font.
        Parameters:
        fontName - the name of the font to use. If null, the name is taken from the font.
        fontFile - the font file. This file must exist for the live time of this object, as the font data will be read lazy on demand
      • registerFont

        public void registerFont​(java.io.File fontFile)
        Override for registerFont(null,fontFile)
        Parameters:
        fontFile - the font file
      • registerFont

        public void registerFont​(java.io.InputStream fontStream)
                          throws java.io.IOException
        Override for registerFont(null,fontStream)
        Parameters:
        fontStream - the font file
        Throws:
        java.io.IOException - when something goes wrong with reading the font or writing the font to the content stream of the PDF:
      • registerFont

        public void registerFont​(java.lang.String name,
                                 org.apache.pdfbox.pdmodel.font.PDFont font)
        Register a font which is already associated with the PDDocument
        Parameters:
        name - the name of the font as returned by Font.getFontName(). This name is used for the mapping the java.awt.Font to this PDFont.
        font - the PDFont to use. This font must be loaded in the current document.
      • hasDynamicFontMapping

        protected boolean hasDynamicFontMapping()
        Returns:
        true if the font mapping is populated on demand. This is usually only the case if this class has been derived. The default implementation just checks for this.
      • canDrawText

        public boolean canDrawText​(java.text.AttributedCharacterIterator iterator,
                                   IPdfBoxGraphics2DFontTextDrawer.IFontTextDrawerEnv env)
                            throws java.io.IOException,
                                   java.awt.FontFormatException
        Specified by:
        canDrawText in interface IPdfBoxGraphics2DFontTextDrawer
        Parameters:
        iterator - Has the text and all its properties
        env - Environment
        Returns:
        true when the given text can be fully drawn using fonts. return false to have the text drawn as vector shapes
        Throws:
        java.io.IOException - when a font can not be loaded or a paint can't be applied.
        java.awt.FontFormatException - when the font file can not be loaded
      • drawText

        public void drawText​(java.text.AttributedCharacterIterator iterator,
                             IPdfBoxGraphics2DFontTextDrawer.IFontTextDrawerEnv env)
                      throws java.io.IOException,
                             java.awt.FontFormatException
        Specified by:
        drawText in interface IPdfBoxGraphics2DFontTextDrawer
        Parameters:
        iterator - The text with all properties
        env - Environment
        Throws:
        java.io.IOException - when a font can not be loaded or a paint can't be applied.
        java.awt.FontFormatException - when the font file can not be loaded
      • getSensibleThickness

        private float getSensibleThickness​(float thickness,
                                           java.awt.Font font)
      • applyFont

        private org.apache.pdfbox.pdmodel.font.PDFont applyFont​(java.awt.Font font,
                                                                IPdfBoxGraphics2DFontTextDrawer.IFontTextDrawerEnv env)
                                                         throws java.io.IOException,
                                                                java.awt.FontFormatException
        Throws:
        java.io.IOException
        java.awt.FontFormatException
      • mapFont

        protected org.apache.pdfbox.pdmodel.font.PDFont mapFont​(java.awt.Font font,
                                                                IPdfBoxGraphics2DFontTextDrawer.IFontTextDrawerEnv env)
                                                         throws java.io.IOException,
                                                                java.awt.FontFormatException
        Try to map the java.awt.Font to a PDFont.
        Parameters:
        font - the java.awt.Font for which a mapping should be found
        env - environment of the font mapper
        Returns:
        the PDFont or null if none can be found.
        Throws:
        java.io.IOException - when the font can not be loaded
        java.awt.FontFormatException - when the font file can not be loaded
      • iterateRun

        private boolean iterateRun​(java.text.AttributedCharacterIterator iterator,
                                   java.lang.StringBuilder sb)