2014-12-02 186 views
-1

嗨当​​我使用java与itext生成表格时,我想在表头上方的文档 的左上角添加表格编号请让我知道如何做到这一点。当我生成pdf表格时,我想使用itext java在pdf的左上角添加表格编号

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); 

如何设置表格对齐到页边距开始。

+0

那你试试?你是从头开始创建一个文档还是你正在填写一个现有的表单?你使用'showTextAligned()'方法吗?什么地方出了错?你需要澄清。在目前的状态下,你的问题不能得到回答,因为你没有给我们足够的信息。 – 2014-12-02 06:52:38

+0

@Lowagie如何将showTextAligned()应用到表中。 – 2014-12-02 07:39:02

回答

0

你的问题很混乱。你说你正在创建一个表单,但是当你说表单时,你似乎不是指交互式表单,而是指包含表格的普通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