Java Tutorial/PDF
- AcroFields
- AcroForm
- Action
- Anchor
- Annotation
- Arc
- BMP Image
- Background Color
- Barcode
- BarcodeEAN
- Bookmarks
- Chapter
- Character
- Chunk
- Circle
- Column
- Curve
- Document
- Document Action
- EPS
- Ellipse
- Embedded Javascript
- Gif Image
- Graphics2D
- HTML Parser
- Image
- Introduction
- JPG Image
- Jump
- Layer
- Line
- List
- Margin
- Metadata
- Outline
- PDF Compress
- PDF Copy
- PDF Encrypt Decrypt
- PDF Page
- PDF Reader
- PDF Stamper
- PDF Version
- PDF Writer
- PNG Image
- Page Event
- Page Size
- Paragraph
- Path
- Pattern
- PdfContentByte
- Phrase
- RTF HTML
- Rectangle
- Section
- Security
- Servlet
- Shading
- Shape
- Stroke
- Symbols
- Table
- Table Cell
- Table Column
- Table Row
- Template
- Text
- TextField
- Thumbs
- Tiff Image
- Transparency
- Underline
- Viewer Preferences
- WMF Image
- Zoom
- to PDF
Содержание
- 1 .afm font
- 2 All kinds of fonts
- 3 BaseFont.createFont(BaseFont.HELVETICA,BaseFont.WINANSI, BaseFont.NOT_EMBEDDED)
- 4 Create font
- 5 Create font from pfm file
- 6 Embeded font
- 7 Embeded TrueType Font
- 8 Font Metrics
- 9 Font supporting Unicode
- 10 Font.UNDERLINE
- 11 Get font name
- 12 Japanese font
- 13 Korea font
- 14 new Font(Font.COURIER, 10, Font.BOLD)
- 15 Not Embedded font
- 16 .otf font
- 17 Right To Left Example
- 18 TrueType font
- 19 Use DefaultFontMapper
- 20 Use truetype font to draw unicode string
.afm font
<source lang="java">
import java.io.FileOutputStream; import com.lowagie.text.Document; import com.lowagie.text.Font; import com.lowagie.text.Paragraph; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfWriter; public class MainClass {
public static void main(String[] args) throws Exception { Document document = new Document(); PdfWriter.getInstance(document, new FileOutputStream("2.pdf")); document.open(); BaseFont bf = BaseFont.createFont("putr8a.afm", "", BaseFont.EMBEDDED); Font font = new Font(bf, 12); document.add(new Paragraph("0123456789\nabcdefghijklmnopqrstuvwxyz\nABCDEFGHIJKLMNOPQRSTUVWXZ", font)); bf = BaseFont.createFont("cmr10.afm", "", BaseFont.EMBEDDED); font = new Font(bf, 12); document.add(new Paragraph("0123456789\nabcdefghijklmnopqrstuvwxyz\nABCDEFGHIJKLMNOPQRSTUVWXZ", font)); document.close(); }
}</source>
All kinds of fonts
<source lang="java">
import java.awt.Color; import java.io.FileOutputStream; import com.lowagie.text.Document; import com.lowagie.text.Font; import com.lowagie.text.Paragraph; import com.lowagie.text.pdf.PdfWriter; public class MainClass {
public static void main(String[] args) throws Exception { Document document = new Document(); PdfWriter.getInstance(document, new FileOutputStream("2.pdf")); document.open(); Font[] fonts = new Font[14]; fonts[0] = new Font(Font.COURIER, Font.DEFAULTSIZE, Font.NORMAL); fonts[1] = new Font(Font.COURIER, Font.DEFAULTSIZE, Font.ITALIC); fonts[2] = new Font(Font.COURIER, Font.DEFAULTSIZE, Font.BOLD); fonts[3] = new Font(Font.COURIER, Font.DEFAULTSIZE, Font.BOLD | Font.ITALIC); fonts[4] = new Font(Font.HELVETICA, Font.DEFAULTSIZE, Font.NORMAL); fonts[5] = new Font(Font.HELVETICA, Font.DEFAULTSIZE, Font.ITALIC); fonts[6] = new Font(Font.HELVETICA, Font.DEFAULTSIZE, Font.BOLD); fonts[7] = new Font(Font.HELVETICA, Font.DEFAULTSIZE, Font.BOLDITALIC); fonts[8] = new Font(Font.TIMES_ROMAN, Font.DEFAULTSIZE, Font.NORMAL); fonts[9] = new Font(Font.TIMES_ROMAN, Font.DEFAULTSIZE, Font.ITALIC); fonts[10] = new Font(Font.TIMES_ROMAN, Font.DEFAULTSIZE, Font.BOLD); fonts[11] = new Font(Font.TIMES_ROMAN, Font.DEFAULTSIZE, Font.BOLDITALIC); fonts[12] = new Font(Font.SYMBOL, Font.DEFAULTSIZE); fonts[13] = new Font(Font.ZAPFDINGBATS, Font.DEFAULTSIZE, Font.UNDEFINED, new Color(0xFF, 0x00, 0x00)); // add the content for (int i = 0; i < 14; i++) { document.add(new Paragraph("quick brown fox jumps over the lazy dog", fonts[i])); } document.close(); }
}</source>
BaseFont.createFont(BaseFont.HELVETICA,BaseFont.WINANSI, BaseFont.NOT_EMBEDDED)
<source lang="java">
import java.awt.Color; import java.io.FileOutputStream; import java.io.IOException; import com.lowagie.text.Document; import com.lowagie.text.DocumentException; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfContentByte; import com.lowagie.text.pdf.PdfTemplate; import com.lowagie.text.pdf.PdfTextArray; import com.lowagie.text.pdf.PdfWriter; public class MainClass {
public static void main(String[] args) throws Exception { Document document = new Document(); PdfWriter writer = PdfWriter.getInstance( document, new FileOutputStream("2.pdf")); document.open(); String text = "jexp"; PdfContentByte cb = writer.getDirectContent(); BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED); cb.beginText(); cb.moveText(36, 806); cb.setFontAndSize(bf, 24); cb.moveTextWithLeading(0, -36); cb.showText(text); cb.endText(); document.close(); }
}</source>
Create font
<source lang="java">
import java.io.FileOutputStream; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfContentByte; import com.lowagie.text.pdf.PdfReader; import com.lowagie.text.pdf.PdfStamper; public class MainClass {
public static void main(String[] args) throws Exception { PdfReader reader = new PdfReader("HelloWorldRead.pdf"); PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("HelloWorldStamper.pdf")); BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED); PdfContentByte over; int total = reader.getNumberOfPages() + 1; for (int i = 1; i < total; i++) { over = stamper.getOverContent(i); over.beginText(); over.setFontAndSize(bf, 18); over.setTextMatrix(30, 30); over.showText("page " + i); over.endText(); over.setRGBColorStroke(0xFF, 0x00, 0x00); over.setLineWidth(5f); over.ellipse(250, 450, 350, 550); over.stroke(); } stamper.close(); }
}</source>
Create font from pfm file
<source lang="java">
import java.io.FileOutputStream; import com.lowagie.text.Document; import com.lowagie.text.Font; import com.lowagie.text.Paragraph; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfWriter; public class MainClass {
public static void main(String[] args) throws Exception { Document document = new Document(); PdfWriter.getInstance(document, new FileOutputStream("2.pdf")); document.open(); BaseFont bf = BaseFont.createFont("cmr10.pfm", "", BaseFont.EMBEDDED); Font font = new Font(bf, 12); document.add(new Paragraph("0123456789\nabcdefghijklmnopqrstuvwxyz\nABCDEFGHIJKLMNOPQRSTUVWXZ", font)); document.close(); }
}</source>
Embeded font
<source lang="java">
import java.io.FileOutputStream; import com.lowagie.text.Document; import com.lowagie.text.Font; import com.lowagie.text.Paragraph; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfWriter; public class MainClass {
public static void main(String[] args) throws Exception { Document document = new Document(); PdfWriter.getInstance(document, new FileOutputStream("2.pdf")); document.open(); BaseFont bf = BaseFont.createFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, BaseFont.EMBEDDED); System.err.println(bf.getClass().getName()); Font font = new Font(bf, 12); document.add(new Paragraph("0123456789\nabcdefghijklmnopqrstuvwxyz\nABCDEFGHIJKLMNOPQRSTUVWXZ", font)); document.close(); }
}</source>
Embeded TrueType Font
<source lang="java">
import java.io.FileOutputStream; import com.lowagie.text.Document; import com.lowagie.text.Font; import com.lowagie.text.Paragraph; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfWriter; public class MainClass {
public static void main(String[] args) throws Exception { Document document = new Document(); PdfWriter.getInstance(document, new FileOutputStream("ttf.pdf")); document.open(); BaseFont bf = BaseFont.createFont("c:/windows/fonts/ARBLI___.ttf", BaseFont.CP1252, BaseFont.EMBEDDED); Font font = new Font(bf, 12); System.err.println(bf.getClass().getName()); document.add(new Paragraph("This is font arial black italic (embedded)", font)); bf = BaseFont.createFont("c:/windows/fonts/ARBLI___.ttf", BaseFont.CP1252, BaseFont.NOT_EMBEDDED); font = new Font(bf, 12); document.add(new Paragraph("This is font arial black italic (not embedded)", font)); System.out.println("PostScript name:" + bf.getPostscriptFontName()); String[] encoding = bf.getCodePagesSupported(); for (int i = 0; i < encoding.length; i++) { System.out.println("encoding[" + i + "] = " + encoding[i]); } document.newPage(); String[][] name = bf.getFullFontName(); for (int i = 0; i < name.length; i++) { System.out.println(name[i][3] + " (" + name[i][0] + "; " + name[i][1] + "; " + name[i][2] + ")"); } document.close(); }
}</source>
Font Metrics
<source lang="java">
import java.io.FileOutputStream; import com.lowagie.text.Document; import com.lowagie.text.Font; import com.lowagie.text.Paragraph; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfWriter; public class MainClass {
public static void main(String[] args) throws Exception { Document document = new Document(); PdfWriter.getInstance(document, new FileOutputStream("2.pdf")); document.open(); Font font = new Font(Font.HELVETICA, 12); BaseFont bf = font.getCalculatedBaseFont(false); String numbers = "0123456789"; String letters = "abcdefghijklmnopqrstuvwxyz"; document.add(new Paragraph(numbers, font)); System.out.println("width: " + bf.getWidth(numbers) + " (" + bf.getWidthPoint(numbers, 12) + "pt)"); System.out.println("ascent: " + bf.getAscent(numbers) + "; descent: " + bf.getDescent(numbers) + "; height: " + (bf.getAscentPoint(numbers, 12) - bf.getDescentPoint(numbers, 12) + "pt")); document.add(new Paragraph(letters, font)); System.out.println("width: " + bf.getWidth(letters) + " (" + bf.getWidthPoint(letters, 12) + "pt)"); System.out.println("ascent: " + bf.getAscent(letters) + "; descent: " + bf.getDescent(letters) + "; height: " + (bf.getAscentPoint(letters, 12) - bf.getDescentPoint(letters, 12)) + "pt"); document.close(); }
}</source>
Font supporting Unicode
<source lang="java">
import java.io.FileOutputStream; import java.io.IOException; import com.lowagie.text.Document; import com.lowagie.text.DocumentException; import com.lowagie.text.Font; import com.lowagie.text.Paragraph; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfWriter; public class MainClass {
public static void main(String[] args)throws Exception { Document document = new Document(); PdfWriter.getInstance(document, new FileOutputStream("2.pdf")); document.open(); BaseFont bf; Font font; bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); font = new Font(bf, 12); document.add(new Paragraph("test", font)); document.add(new Paragraph("Font: " + bf.getPostscriptFontName(),font)); document.add(new Paragraph("\u5341\u950a\u57cb\u4f0f", font)); document.close(); }
}</source>
Font.UNDERLINE
<source lang="java">
import java.io.FileOutputStream; import com.lowagie.text.Chunk; import com.lowagie.text.Document; import com.lowagie.text.Font; import com.lowagie.text.pdf.PdfAction; import com.lowagie.text.pdf.PdfWriter; public class MainClass {
public static void main(String[] args) throws Exception { Document document = new Document(); PdfWriter.getInstance(document, new FileOutputStream("2.pdf")); document.open(); Font font = new Font(); font.setStyle(Font.UNDERLINE); Chunk chunk = new Chunk("jexp", font); chunk.setAction(new PdfAction("http://www.jexp.ru")); document.add(chunk); document.close(); }
}</source>
Get font name
<source lang="java">
import java.io.FileOutputStream; import com.lowagie.text.Document; import com.lowagie.text.Font; import com.lowagie.text.Paragraph; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfWriter; public class MainClass {
public static void main(String[] args) throws Exception { Document document = new Document(); PdfWriter.getInstance(document, new FileOutputStream("2.pdf")); document.open(); BaseFont bf = BaseFont.createFont("esl_gothic_unicode.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); Font font = new Font(bf, 12); System.err.println(bf.getClass().getName()); document.add(new Paragraph("this is a test.", font)); document.add(new Paragraph("\ue70a\ue70a\ue70a\ue70a\ue70a\ue70a ", font)); document.close(); }
}</source>
Japanese font
<source lang="java">
import java.io.FileOutputStream; import java.io.IOException; import com.lowagie.text.Document; import com.lowagie.text.DocumentException; import com.lowagie.text.Font; import com.lowagie.text.Paragraph; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfWriter; public class MainClass {
public static void main(String[] args)throws Exception { Document document = new Document(); PdfWriter.getInstance(document, new FileOutputStream("2.pdf")); document.open(); BaseFont bf; Font font; bf = BaseFont.createFont("KozMinPro-Regular", "UniJIS-UCS2-H",BaseFont.EMBEDDED); font = new Font(bf, 12); document.add(new Paragraph("asdf",font)); document.add(new Paragraph("Font: " + bf.getPostscriptFontName(),font)); document.add(new Paragraph("\u8ab0\u3082\u77e5\u3089\u306a\u3044",font)); document.close(); }
}</source>
Korea font
<source lang="java">
import java.io.FileOutputStream; import java.io.IOException; import com.lowagie.text.Document; import com.lowagie.text.DocumentException; import com.lowagie.text.Font; import com.lowagie.text.Paragraph; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfWriter; public class MainClass {
public static void main(String[] args) throws Exception { Document document = new Document(); PdfWriter.getInstance(document, new FileOutputStream("2.pdf")); document.open(); BaseFont bf; Font font; bf = BaseFont.createFont("HYGoThic-Medium", "UniKS-UCS2-H", BaseFont.NOT_EMBEDDED); font = new Font(bf, 12); document.add(new Paragraph("asdf", font)); document.add(new Paragraph("Font: " + bf.getPostscriptFontName(), font)); document.add(new Paragraph("\ube48\uc9d1", font)); document.close(); }
}</source>
new Font(Font.COURIER, 10, Font.BOLD)
<source lang="java">
import java.awt.Color; import java.io.FileOutputStream; import com.lowagie.text.Chunk; import com.lowagie.text.Document; import com.lowagie.text.Font; import com.lowagie.text.Phrase; import com.lowagie.text.pdf.PdfWriter; public class MainClass {
public static void main(String[] args) throws Exception { Document document = new Document(); PdfWriter.getInstance(document, new FileOutputStream("2.pdf")); document.open(); Font font = new Font(Font.COURIER, 10, Font.BOLD); font.setColor(new Color(0xFF, 0xFF, 0xFF)); Chunk fox = new Chunk("this is a", font); fox.setBackground(new Color(0xa5, 0x2a, 0x2a)); Phrase p = new Phrase(fox); p.add(" test"); Chunk dog = new Chunk(" another test", new Font(Font.TIMES_ROMAN, 14, Font.ITALIC)); dog.setBackground(new Color(0xFF, 0x00, 0x00), 10, -30, 20, -10); p.add(dog); document.add(p); document.close(); }
}</source>
Not Embedded font
<source lang="java">
import java.io.FileOutputStream; import com.lowagie.text.Document; import com.lowagie.text.Font; import com.lowagie.text.Paragraph; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfWriter; public class MainClass {
public static void main(String[] args) throws Exception { Document document1 = new Document(); PdfWriter.getInstance(document1, new FileOutputStream("font_not_embedded.pdf")); document1.open(); BaseFont bf_not_embedded = BaseFont.createFont("c:\\windows\\fonts\\comic.ttf", BaseFont.CP1252, BaseFont.NOT_EMBEDDED); Font font_not_embedded = new Font(bf_not_embedded, 12); document1.add(new Paragraph("quick brown fox jumps over the lazy dog", font_not_embedded)); document1.close(); }
}</source>
.otf font
<source lang="java">
import java.io.FileOutputStream; import com.lowagie.text.Document; import com.lowagie.text.Font; import com.lowagie.text.Paragraph; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfWriter; public class MainClass {
public static void main(String[] args) throws Exception { Document document = new Document(); PdfWriter.getInstance(document, new FileOutputStream("2.pdf")); document.open(); BaseFont bf = BaseFont.createFont("esl_gothic_shavian.otf", "Cp1252", BaseFont.EMBEDDED); System.err.println(bf.getClass().getName()); Font font = new Font(bf, 12); document.add(new Paragraph("abced")); document.add(new Paragraph("this is a test", font)); document.close(); }
}</source>
Right To Left Example
<source lang="java">
import java.io.FileOutputStream; import com.lowagie.text.Document; import com.lowagie.text.Font; import com.lowagie.text.PageSize; import com.lowagie.text.Paragraph; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.MultiColumnText; import com.lowagie.text.pdf.PdfWriter; public class MainClass {
public static void main(String[] args) throws Exception { Document document = new Document(PageSize.A4); PdfWriter.getInstance(document, new FileOutputStream("2.pdf")); document.open(); BaseFont bf = BaseFont.createFont("c:/windows/fonts/arial.ttf", BaseFont.IDENTITY_H, true); Font font = new Font(bf, 14); MultiColumnText mct = new MultiColumnText(); mct.addSimpleColumn(36, PageSize.A4.width() - 36); mct.setRunDirection(PdfWriter.RUN_DIRECTION_RTL); mct.addElement(new Paragraph("\u05e0\u05d9\u05e0\u05d4", font)); document.add(mct); document.close(); }
}</source>
TrueType font
<source lang="java">
import java.io.FileOutputStream; import com.lowagie.text.Document; import com.lowagie.text.Font; import com.lowagie.text.Paragraph; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfWriter; public class MainClass {
public static void main(String[] args) throws Exception { Document document = new Document(); PdfWriter.getInstance(document, new FileOutputStream("ttc.pdf")); document.open(); BaseFont bf; Font font; bf = BaseFont.createFont("c:/windows/fonts/msgothic.ttc,0", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); font = new Font(bf, 12); System.err.println(bf.getClass().getName()); document.add(new Paragraph("abcde", font)); document.add(new Paragraph("\u7f85\u751f\u9580", font)); String[] names = BaseFont.enumerateTTCNames("c:/windows/fonts/msgothic.ttc"); for (int i = 0; i < names.length; i++) { document.add(new Paragraph("font " + i + ": " + names[i], font)); } document.close(); }
}</source>
Use DefaultFontMapper
<source lang="java">
import java.awt.Color; import java.awt.FontMetrics; import java.awt.Graphics2D; import java.io.FileOutputStream; import java.util.Iterator; import java.util.Map; import com.lowagie.text.Document; import com.lowagie.text.Rectangle; import com.lowagie.text.pdf.DefaultFontMapper; import com.lowagie.text.pdf.PdfContentByte; import com.lowagie.text.pdf.PdfTemplate; import com.lowagie.text.pdf.PdfWriter; public class MainClass {
public static void main(String[] args) throws Exception { Document document = new Document(new Rectangle(100, 100)); PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream( "sun_tutorial_with_text.pdf")); document.open(); PdfContentByte cb = writer.getDirectContent(); PdfTemplate tp = cb.createTemplate(100, 100); DefaultFontMapper mapper = new DefaultFontMapper(); mapper.insertDirectory("c:/windows/fonts"); String name; Map map = mapper.getMapper(); for (Iterator i = map.keySet().iterator(); i.hasNext();) { name = (String) i.next(); System.out.println(name + ": " + ((DefaultFontMapper.BaseFontParameters) map.get(name)).fontName); } Graphics2D g2 = tp.createGraphics(100, 100, mapper); g2.setColor(Color.black); java.awt.Font thisFont = new java.awt.Font("Garamond", java.awt.Font.PLAIN, 18); g2.setFont(thisFont); String pear = "Pear"; FontMetrics metrics = g2.getFontMetrics(); int width = metrics.stringWidth(pear); g2.drawString(pear, (100 - width) / 2, 20); g2.dispose(); cb.addTemplate(tp, 0, 0); document.close(); }
}</source>
Use truetype font to draw unicode string
<source lang="java">
import java.awt.Graphics2D; import java.io.FileOutputStream; import com.lowagie.text.Document; import com.lowagie.text.Paragraph; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfContentByte; import com.lowagie.text.pdf.PdfTemplate; import com.lowagie.text.pdf.PdfWriter; public class MainClass {
public static void main(String[] args) throws Exception { Document document = new Document(); PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("2.pdf")); document.open(); String text = "\u0936\u093e\u0902\u0924\u093f"; BaseFont bf = BaseFont.createFont("c:/windows/fonts/arialuni.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); document.add(new Paragraph(text, new com.lowagie.text.Font(bf, 12))); document.close(); }
}</source>