Java Tutorial/PDF/Graphics2D
Содержание
Create Graphics2D from PdfTemplate
<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 = "\u0936\u093e\u0902\u0924\u093f"; 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("Graphics2D: " + text, 0, 40); g2.dispose(); cb.addTemplate(tp, 36, 750); document.close(); }
}</source>
Draw with Graphics2D
<source lang="java">
import java.awt.Color; import java.awt.Graphics2D; import java.awt.geom.Ellipse2D; import java.io.FileOutputStream; import com.lowagie.text.Document; import com.lowagie.text.Rectangle; import com.lowagie.text.pdf.PdfContentByte; import com.lowagie.text.pdf.PdfWriter; public class MainClass {
public static void main(String[] args) throws Exception { int w, h; w = 150; h = 150; Ellipse2D.Double circle = new Ellipse2D.Double(12, 12, 12, 12); Document document = new Document(new Rectangle(w, h)); PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("sun_tutorial.pdf")); document.open(); PdfContentByte cb = writer.getDirectContent(); Graphics2D g2 = cb.createGraphics(w, h); g2.setColor(Color.green); g2.fill(circle); g2.dispose(); document.close(); }
}</source>
Text with an absolute position using java.awt.Graphics2D object
<source lang="java">
import java.awt.Graphics2D; import java.io.FileOutputStream; import com.lowagie.text.Document; import com.lowagie.text.PageSize; 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(PageSize.A4); PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream( "h.pdf")); document.open(); PdfContentByte cb = writer.getDirectContent(); Graphics2D graphics2D = cb.createGraphics(PageSize.A4.width(), PageSize.A4 .height()); graphics2D.drawString("Hello World", 36, 54); graphics2D.dispose(); document.close(); }
}</source>
Use java.awt.Font to draw strings
<source lang="java">
import java.awt.Graphics2D; import java.io.FileOutputStream; import com.lowagie.text.Document; import com.lowagie.text.pdf.AsianFontMapper; 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); AsianFontMapper mapper = new AsianFontMapper(AsianFontMapper.JapaneseFont_Min, AsianFontMapper.JapaneseEncoding_H); Graphics2D g2 = tp.createGraphics(100, 50, mapper); 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>