2014-12-02 84 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

相關問題