You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iText7是否支持使用Graphics2D?附iText5原有实现方式

在iText7中使用Graphics2D的解决方案

别担心,完全可以在iText7里继续使用Graphics2D进行绘制!虽然iText7重构了核心API,移除了iText5中的PdfContentByte类,但它提供了专门的类来桥接AWT的Graphics2D功能,实现逻辑和iText5类似,只是入口类有所变化。

具体实现步骤与代码示例

以下是完整的实现代码,对应你在iText5中的需求:

import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfPage;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.canvas.PdfCanvas;
import com.itextpdf.awt.PdfGraphics2D;
import java.awt.Color;
import java.awt.Graphics2D;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;

public class Graphics2DInItext7 {
    public static void main(String[] args) throws Exception {
        // 1. 初始化PDF文档和Writer
        PdfDocument pdfDoc = new PdfDocument(new PdfWriter("graphics2d_output.pdf"));
        // 使用旋转后的A3页面
        Rectangle pageSize = PageSize.A3.rotate();
        Document doc = new Document(pdfDoc, pageSize);

        // 2. 获取当前页面的PdfCanvas(替代iText5的PdfContentByte)
        PdfPage page = pdfDoc.addNewPage();
        PdfCanvas canvas = new PdfCanvas(page);

        // 3. 创建Graphics2D对象
        Graphics2D g2d = new PdfGraphics2D(canvas, pageSize.getWidth(), pageSize.getHeight());

        // 4. 用Graphics2D执行绘制操作(和AWT的用法完全一致)
        g2d.setColor(Color.RED);
        g2d.drawRect(100, 100, 300, 200); // 绘制矩形
        g2d.setColor(Color.BLACK);
        g2d.drawString("使用Graphics2D在iText7中绘制内容", 120, 180); // 绘制文本
        // 你也可以添加更复杂的绘制,比如自定义形状、图像等

        // 5. 关键步骤:结束Graphics2D绘制,将内容刷新到PDF中
        g2d.dispose();

        // 可选:添加其他iText7原生元素
        doc.add(new Paragraph("这是iText7原生Canvas之外的内容"));

        // 关闭文档
        doc.close();
    }
}

核心要点说明

  • 替代类对应关系:iText7中的PdfCanvas就是iText5PdfContentByte的替代者,负责底层的PDF内容绘制操作。
  • PdfGraphics2D类:这是iText7专门提供的AWT Graphics2D适配器,通过它可以直接将AWT的绘制逻辑映射到PDFCanvas上。
  • 必须调用dispose():绘制完成后一定要调用g2d.dispose(),这个方法会把Graphics2D中缓存的绘制指令全部写入PDFCanvas,否则你的绘制内容不会出现在最终的PDF里。
  • 兼容性:所有AWT Graphics2D支持的绘制操作(比如形状、文本、图像、变换等)都可以在这里使用,和你在iText5中的使用习惯完全兼容。

内容的提问来源于stack exchange,提问作者Neph

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:25:24