嗨,当我使用 java 和 itext 生成表单时,我想在文档的左上角添加表单编号在标题上方。请让我知道方法。
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);
如何将表格对齐方式设置为页边距的开头。
你的问题非常令人困惑。你说你正在创建一个表单,但当你说表单时,你似乎不是指交互式表单,而是指包含表格的普通PDF。
你说你想在标题上方添加一个数字,但你没有告诉我们你所说的标题是什么意思。你假设阅读你问题的人可以读懂你的想法。
我猜您想使用页面事件在每个页面的左上角添加一个String
。这将使您的问题几乎是itextsharp的副本:如何使用itextsharp在PDF中生成带有动态标题的报告?
您可以像这样创建一个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 处添加的数字。