java - 有谁知道如何在JAVA中使用iText创建两个并行表?

标签 java itext

我已经在 java 中使用 iText 创建了表。但我想为我的一个项目创建两个并行表。谁能告诉我使用 iText 创建两个并行表的解决方案吗?

最佳答案

这是代码片段

package com.example;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

public class PdfTest {

    private Document document;

    public PdfTest() {
        document = new Document();
    }

    public boolean openPdf() {
        boolean status = false;
        try {
            File pdfFile = new File("test.pdf");
            if (pdfFile != null) {
                PdfWriter.getInstance(document, new FileOutputStream(pdfFile));
                document.open();
                status = true;
            }
        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        } catch (DocumentException ex) {
            ex.printStackTrace();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return status;
    }

    public void closePdf() {
        document.close();
    }

    public void generatePdf() throws DocumentException {
        Paragraph paragraph = new Paragraph();
        PdfPCell cell = null;
        // Main table
        PdfPTable mainTable = new PdfPTable(2);
        mainTable.setWidthPercentage(100.0f);
        // First table
        PdfPCell firstTableCell = new PdfPCell();
        firstTableCell.setBorder(PdfPCell.NO_BORDER);
        PdfPTable firstTable = new PdfPTable(2);
        firstTable.setWidthPercentage(50.0f);
        cell = new PdfPCell(new Phrase("T1R1C1"));
        firstTable.addCell(cell);
        cell = new PdfPCell(new Phrase("T1R1C2"));
        firstTable.addCell(cell);
        cell = new PdfPCell(new Phrase("T1R2C1"));
        firstTable.addCell(cell);
        cell = new PdfPCell(new Phrase("T1R2C2"));
        firstTable.addCell(cell);
        firstTableCell.addElement(firstTable);
        mainTable.addCell(firstTableCell);
        // Second table
        PdfPCell secondTableCell = new PdfPCell();
        secondTableCell.setBorder(PdfPCell.NO_BORDER);
        PdfPTable secondTable = new PdfPTable(2);
        secondTable.setWidthPercentage(50.0f);
        cell = new PdfPCell(new Phrase("T2R1C1"));
        secondTable.addCell(cell);
        cell = new PdfPCell(new Phrase("T2R1C2"));
        secondTable.addCell(cell);
        cell = new PdfPCell(new Phrase("T2R2C1"));
        secondTable.addCell(cell);
        cell = new PdfPCell(new Phrase("T2R2C2"));
        secondTable.addCell(cell);
        secondTableCell.addElement(secondTable);
        mainTable.addCell(secondTableCell);
        paragraph.add(mainTable);
        document.add(paragraph);
    }
}

测试一下

PdfTest pdfTest = new PdfTest();
try {
    if (pdfTest.openPdf()) {
        pdfTest.generatePdf();
        pdfTest.closePdf();
    }
} catch (Exception ex) {
    ex.printStackTrace();
}

希望这有帮助。

关于java - 有谁知道如何在JAVA中使用iText创建两个并行表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20815388/

相关文章:

java - 如何使用 iText 阅读多列 pdf?

java - 使用 Flying Saucer Itext batik 嵌入嵌入 svg 的 Html 转换为 PDF

java - 如何在 Java JDBC 中处理异常?

java - 在 hibernate 中关闭 import.sql

java - 静态类中的 IO 异常 - java

java - 使用 SWT 在 Java 中呈现 SVG - Batik 太慢

java - 读取 PDF、接收文本以及写入新 PDF 的简单方法。 ( java )

java - 通过 Java 批处理 : iText or Apache FOP? 简单生成 PDF

java - 如何从 arraylist 中减去一些值?

java - 如何在 itext PdfPTable 中动态添加一行?