Java Tutorial/PDF/Text
Содержание
- 1 Add text to an existing Pdf document
- 2 Begin text and end text
- 3 Chunk text with underline
- 4 Create and use PdfTextArray
- 5 Draw Unicode string
- 6 PdfContentByte.TEXT_RENDER_MODE_STROKE
- 7 Set Text Rendering Mode
- 8 Set Word Spacing
- 9 Text alignment
- 10 Text is added at an absolute position and the stream with the content of a page is not compressed
- 11 Text Matrix
- 12 Text with line above
Add text to an existing Pdf document
<source lang="java">
import java.io.FileOutputStream; import com.lowagie.text.Image; 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("HelloWorldStamper2.pdf")); Image img = Image.getInstance("watermark.jpg"); img.setAbsolutePosition(200, 400); BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED); PdfContentByte under, over; int total = reader.getNumberOfPages() + 1; for (int i = 1; i < total; i++) { stamper.setRotateContents(false); under = stamper.getUnderContent(i); under.addImage(img); over = stamper.getOverContent(i); over.beginText(); over.setFontAndSize(bf, 18); over.setTextMatrix(30, 30); over.showText("page " + i); over.endText(); } stamper.close(); }
}</source>
Begin text and end text
<source lang="java">
import java.io.FileOutputStream; import com.lowagie.text.Document; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfContentByte; 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(); PdfContentByte cb = writer.getDirectContent(); String text = "this is a test"; BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED); cb.setFontAndSize(bf, 12); cb.beginText();
cb.showTextAligned(PdfContentByte.ALIGN_CENTER, text + " Center", 250, 650, 0); cb.endText(); document.close(); }
}</source>
Chunk text with underline
<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.Paragraph; import com.lowagie.text.pdf.PdfContentByte; 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(); Chunk foxLineUnder = new Chunk("this is a test"); foxLineUnder.setUnderline(0.2f, -2f); Paragraph p = new Paragraph (); p.add(foxLineUnder); document.add(p); document.add(Chunk.NEWLINE); document.close(); }
}</source>
Create and use PdfTextArray
<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.newlineText(); PdfTextArray array = new PdfTextArray("J"); array.add(120); array.add("a"); array.add(120); array.add("v"); array.add(95); array.add("a2s"); cb.showText(array); cb.endText(); document.close(); }
}</source>
Draw Unicode string
<source lang="java">
import java.awt.Graphics2D; import java.io.FileOutputStream; import com.lowagie.text.Document; 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 = "\u5e73\u548C"; PdfContentByte cb = writer.getDirectContent(); PdfTemplate tp = cb.createTemplate(100, 50); Graphics2D g2 = tp.createGraphicsShapes(100, 50); java.awt.Font font = new java.awt.Font("Arial Unicode MS", java.awt.Font.PLAIN, 12); g2.setFont(font); g2.drawString(text, 0, 40); g2.dispose(); cb.addTemplate(tp, 36, 780); document.close(); }
}</source>
PdfContentByte.TEXT_RENDER_MODE_STROKE
<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(); PdfTemplate tp2 = cb.createTemplate(200, 36); tp2.beginText(); tp2.setTextRenderingMode(PdfContentByte.TEXT_RENDER_MODE_STROKE); tp2.setFontAndSize(bf, 24); tp2.moveText(1, -1); tp2.showText(text); tp2.endText(); cb.addTemplate(tp2, 36, 10); cb.endText(); document.close(); }
}</source>
Set Text Rendering Mode
<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(); PdfTemplate tp1 = cb.createTemplate(160, 36); tp1.beginText(); tp1.setTextRenderingMode(PdfContentByte.TEXT_RENDER_MODE_FILL); tp1.setFontAndSize(bf, 24); tp1.moveText(6, -6); tp1.showText(text); tp1.endText(); cb.addTemplate(tp1, 36, 240); cb.endText(); document.close(); }
}</source>
Set Word Spacing
<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.newlineText(); PdfTextArray array = new PdfTextArray("J"); array.add(120); array.add("a"); array.add(120); array.add("v"); array.add(95); array.add("a2s"); cb.showText(array); cb.setWordSpacing(50); cb.endText(); document.close(); }
}</source>
Text alignment
<source lang="java">
import java.io.FileOutputStream; import com.lowagie.text.Document; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfContentByte; 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(); PdfContentByte cb = writer.getDirectContent(); String text = "this is a test"; BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED); cb.setFontAndSize(bf, 12); cb.beginText();
for (int i = 0; i < 360; i += 30) { cb.showTextAligned(PdfContentByte.ALIGN_LEFT, text, 200, 300, i); } cb.endText(); document.close(); }
}</source>
Text is added at an absolute position and the stream with the content of a page is not compressed
<source lang="java">
import java.io.FileOutputStream; import java.io.IOException; import com.lowagie.text.*; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfContentByte; import com.lowagie.text.pdf.PdfWriter; public class HelloWorldAbsolute {
public static void main(String[] args) throws Exception { Document.rupress = false; Document document = new Document(PageSize.A4); PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream( "HelloWorldAbsolute.pdf")); document.open(); PdfContentByte cb = writer.getDirectContent(); BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED); cb.saveState(); cb.beginText(); cb.moveText(36, 806); cb.moveText(0, -18); cb.setFontAndSize(bf, 12); cb.showText("Hello World"); cb.endText(); cb.restoreState(); document.close(); }
}</source>
Text Matrix
<source lang="java">
import java.io.FileOutputStream; import com.lowagie.text.Document; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfContentByte; 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(); PdfContentByte cb = writer.getDirectContent(); String text = "this is a test"; BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED); cb.setFontAndSize(bf, 12); cb.beginText(); cb.setTextMatrix(50, 700); cb.showText(text); cb.endText(); document.close(); }
}</source>
Text with line above
<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.Paragraph; import com.lowagie.text.pdf.PdfContentByte; 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(); Chunk line = new Chunk("this is a test"); line.setUnderline(0.2f, 14f); Paragraph p = new Paragraph (); p.add(line); document.add(p); document.add(Chunk.NEWLINE); document.close(); }
}</source>