【问题标题】:When i am generating pdf form I want to add form number on top left of the pdf using itext java当我生成 pdf 表单时,我想使用 itext java 在 pdf 的左上角添加表单编号
【发布时间】:2014-12-02 06:01:17
【问题描述】:

嗨,当我使用带有 itext 的 java 生成表单时,我想在文档的左上角添加表单编号 在标题上方。请让我知道如何做到这一点。

PdfPTable table = new PdfPTable(3); // 3 columns.
table.setWidthPercentage(100);
PdfPCell cell1 = new PdfPCell(new Paragraph("Cell 1"));
PdfPCell cell2 = new PdfPCell(new Paragraph("Cell 2"));
PdfPCell cell3 = new PdfPCell(new Paragraph("Cell 3"));
cell1.setBorder(0);
cell2.setBorder(0);
cell3.setBorder(0);
table.addCell(cell1);
table.addCell(cell2);
table.addCell(cell3);

如何将表格对齐设置为页边距的开始。

【问题讨论】:

  • 你尝试了什么?您是从头开始创建文档还是填写现有表格?您是否使用了showTextAligned() 方法?什么地方出了错?你需要澄清。在目前的状态下,由于您没有向我们提供足够的信息,因此无法回答您的问题。
  • @Lowagie 如何将 showTextAligned() 应用于表格。

标签: java pdf itext


【解决方案1】:

你的问题很混乱。您说您正在创建一个表单,但是当您说表单时,您似乎指的不是交互式表单,而是包含一个表格的普通 PDF。

您说您想在标题上方添加一个数字,但您并没有告诉我们您所说的标题是什么意思。您假设阅读您问题的人可以阅读您的想法。

我猜你想使用一个页面事件在每个页面的左上角添加一个String。这会使您的问题几乎与itextsharp: How to generate a report with dynamic header in PDF using itextsharp?

重复

您可以像这样创建PdfPageEventHelper 的子类:

public class Header extends PdfPageEventHelper {

    protected Phrase header;

    public void setHeader(Phrase header) {
        this.header = header;
    }

    @Override
    public void onEndPage(PdfWriter writer, Document document) {
        PdfContentByte canvas = writer.getDirectContentUnder();
        ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, header, 36, 806, 0);
    }
}

然后您可以像这样使用这个Header 类:

public void createPdf(String filename) throws IOException, DocumentException {
    // step 1
    Document document = new Document();
    // step 2
    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(filename));
    Header event = new Header();
    writer.setPageEvent(event);
    // step 3
    document.open();
    // step 4
    List<Integer> factors;
    for (int i = 2; i < 301; i++) {
        factors = getFactors(i);
        if (factors.size() == 1) {
            document.add(new Paragraph("This is a prime number!"));
        }
        for (int factor : factors) {
            document.add(new Paragraph("Factor: " + factor));
        }
        event.setHeader(new Phrase(String.format("THE FACTORS OF %s", i)));
        document.newPage();
    }
    // step 5
    document.close();
}

在你的情况下,你不会:

event.setHeader(new Phrase(String.format("THE FACTORS OF %s", i)));

你会有类似的东西:

event.setHeader(new Phrase(number));

其中number 是您要在坐标 x = 36, y = 806 处添加的数字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-14
    • 1970-01-01
    • 2017-11-01
    • 2017-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多