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 booleancanDrawText(AttributedCharacterIterator iterator, IPdfBoxGraphics2DFontTextDrawer.IFontTextDrawerEnv env)voidclose()Close / delete all resources associated with this drawer.voiddrawText(AttributedCharacterIterator iterator, IPdfBoxGraphics2DFontTextDrawer.IFontTextDrawerEnv env)protected booleanhasDynamicFontMapping()protected org.apache.pdfbox.pdmodel.font.PDFontmapFont(Font font, IPdfBoxGraphics2DFontTextDrawer.IFontTextDrawerEnv env)Try to map the java.awt.Font to a PDFont.voidregisterFont(File fontFile)Override for registerFont(null,fontFile)voidregisterFont(InputStream fontStream)Override for registerFont(null,fontStream)voidregisterFont(String fontName, File fontFile)Register a font.voidregisterFont(String fontName, InputStream fontStream)Register a font.voidregisterFont(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:
closein interfaceAutoCloseable- Specified by:
closein 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
-
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:
canDrawTextin 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
-
drawText
public void drawText(AttributedCharacterIterator iterator, IPdfBoxGraphics2DFontTextDrawer.IFontTextDrawerEnv env) throws IOException, FontFormatException
- Specified by:
drawTextin interfaceIPdfBoxGraphics2DFontTextDrawer- Parameters:
iterator- The text with all propertiesenv- Environment- Throws:
IOExceptionFontFormatException
-
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:
IOExceptionFontFormatException
-
-