itext 7中PdfCanvas和Canvas的区别

Vak*_*pta 1 java itext7

iText7 库中的 PdfCanvas 和 Canvas 类有什么区别?我应该什么时候使用它们中的每一个?

Ula*_*huk 5

简而言之,PdfCanvas它是为低级操作而设计的,并且Canvas是为高级操作而设计的。

您想将矩形/路径/文本和任何其他运算符写入 pdf 的内容流吗?使用PdfCanvas实例。

您想将高级 iText 对象(Paragraphs、Tables、Lists、...)添加到您的PdfCanvas? 使用Canvas实例。

PdfCanvas 示例

        PdfDocument pdfDoc = new PdfDocument(new PdfWriter(destinationFolder + "simpleCanvas.pdf"));

    PdfPage page1 = pdfDoc.addNewPage();

    PdfCanvas canvas = new PdfCanvas(page1);
    canvas.rectangle(100, 100, 100, 100).fill();

    pdfDoc.close();
Run Code Online (Sandbox Code Playgroud)

生成的pdf:在此输入图像描述

画布示例

            PdfDocument pdf = new PdfDocument(new PdfWriter(out));

    PdfPage page = pdf.addNewPage();
    PdfCanvas pdfCanvas = new PdfCanvas(page);

    Rectangle rectangle = new Rectangle(100, 100, 100, 100);

    Canvas canvas = new Canvas(pdfCanvas, pdf, rectangle);
    canvas.add(new Paragraph("Hello World"));

    canvas.close();

    pdf.close();
Run Code Online (Sandbox Code Playgroud)

生成的pdf:在此输入图像描述