Class PdfBoxGraphics2DFontTextDrawer

java.lang.Object
de.rototor.pdfbox.graphics2d.PdfBoxGraphics2DFontTextDrawer
All Implemented Interfaces:
IPdfBoxGraphics2DFontTextDrawer, Closeable, AutoCloseable
Direct Known Subclasses:
PdfBoxGraphics2DFontTextDrawerDefaultFonts

public class PdfBoxGraphics2DFontTextDrawer extends Object implements IPdfBoxGraphics2DFontTextDrawer, Closeable
Default implementation to draw fonts. You can reuse instances of this class within a PDDocument for more then one PdfBoxGraphics2D.

Just ensure that you call close after you closed the PDDocument to free any temporary files.

  • Constructor Details

    • PdfBoxGraphics2DFontTextDrawer

      public PdfBoxGraphics2DFontTextDrawer()
  • Method Details

    • 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 AutoCloseable
      Specified by:
      close in interface Closeable
    • registerFont

      public void registerFont(String fontName, InputStream fontStream) throws 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:
      IOException - when something goes wrong with reading the font or writing the font to the content stream of the PDF:
    • registerFont

      public void registerFont(String fontName, 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(File fontFile)
      Override for registerFont(null,fontFile)
      Parameters:
      fontFile - the font file
    • registerFont

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

      public void registerFont(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

      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:
      IOException - when a font can not be loaded or a paint can't be applied.
      FontFormatException - when the font file can not be loaded
    • drawText

      Specified by:
      drawText in interface IPdfBoxGraphics2DFontTextDrawer
      Parameters:
      iterator - The text with all properties
      env - Environment
      Throws:
      IOException - when a font can not be loaded or a paint can't be applied.
      FontFormatException - when the font file can not be loaded
    • getFontMetrics

      Specified by:
      getFontMetrics in interface IPdfBoxGraphics2DFontTextDrawer
      Parameters:
      f - the Font
      env - the Environment
      Returns:
      the resulting font metrics
      Throws:
      IOException
      FontFormatException
    • mapFont

      protected org.apache.pdfbox.pdmodel.font.PDFont mapFont(Font font, IPdfBoxGraphics2DFontTextDrawer.IFontTextDrawerEnv env) throws IOException, 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:
      IOException - when the font can not be loaded
      FontFormatException - when the font file can not be loaded