Package de.rototor.pdfbox.graphics2d
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 onePdfBoxGraphics2D
.Just ensure that you call close after you closed the PDDocument to free any temporary files.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface de.rototor.pdfbox.graphics2d.IPdfBoxGraphics2DFontTextDrawer
IPdfBoxGraphics2DFontTextDrawer.IFontTextDrawerEnv
-
-
Constructor Summary
Constructors Constructor Description PdfBoxGraphics2DFontTextDrawer()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
canDrawText(AttributedCharacterIterator iterator, IPdfBoxGraphics2DFontTextDrawer.IFontTextDrawerEnv env)
void
close()
Close / delete all resources associated with this drawer.void
drawText(AttributedCharacterIterator iterator, IPdfBoxGraphics2DFontTextDrawer.IFontTextDrawerEnv env)
FontMetrics
getFontMetrics(Font f, IPdfBoxGraphics2DFontTextDrawer.IFontTextDrawerEnv env)
protected boolean
hasDynamicFontMapping()
protected org.apache.pdfbox.pdmodel.font.PDFont
mapFont(Font font, IPdfBoxGraphics2DFontTextDrawer.IFontTextDrawerEnv env)
Try to map the java.awt.Font to a PDFont.void
registerFont(File fontFile)
Override for registerFont(null,fontFile)void
registerFont(InputStream fontStream)
Override for registerFont(null,fontStream)void
registerFont(String fontName, File fontFile)
Register a font.void
registerFont(String fontName, InputStream fontStream)
Register a font.void
registerFont(String name, org.apache.pdfbox.pdmodel.font.PDFont font)
Register a font which is already associated with the PDDocument
-
-
-
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 interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
-
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 byFont.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(AttributedCharacterIterator iterator, IPdfBoxGraphics2DFontTextDrawer.IFontTextDrawerEnv env) throws IOException, FontFormatException
- Specified by:
canDrawText
in interfaceIPdfBoxGraphics2DFontTextDrawer
- Parameters:
iterator
- Has the text and all its propertiesenv
- 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
public void drawText(AttributedCharacterIterator iterator, IPdfBoxGraphics2DFontTextDrawer.IFontTextDrawerEnv env) throws IOException, FontFormatException
- Specified by:
drawText
in interfaceIPdfBoxGraphics2DFontTextDrawer
- Parameters:
iterator
- The text with all propertiesenv
- 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
public FontMetrics getFontMetrics(Font f, IPdfBoxGraphics2DFontTextDrawer.IFontTextDrawerEnv env) throws IOException, FontFormatException
- Specified by:
getFontMetrics
in interfaceIPdfBoxGraphics2DFontTextDrawer
- Parameters:
f
- the Fontenv
- 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 foundenv
- environment of the font mapper- Returns:
- the PDFont or null if none can be found.
- Throws:
IOException
- when the font can not be loadedFontFormatException
- when the font file can not be loaded
-
-