2017-04-24 63 views
0

我能夠使用Building Blocks示例Chapter 7: Handling events; setting viewer preferences and writer properties來創建y的頁面x。解決「Y的頁面X」問題。在該示例中,「頁面x的y」的文本通過具有頁面邊框的Canvas進行分配。但很多時候,「y的x」應該放在這樣的表格中: enter image description here「y的頁面x」在表格中,如何在表格內而不是頁面邊框內對齊文本?

在這種情況下,文本應該在表格內被分配,怎麼做? 在我的應用程序中,包含y的頁面x的表格應該顯示在每頁上,並且仍然在一個固定位置,即在頁面的右上角位置。表格格式和大小不會改變整個文檔。

+0

這是一個腳註表,它是在所有頁面的相同(除可變頁號的部分),或者是一個REGUL ar表中插入頁碼?請提供一些更完整的大綱,說明您要實現的目標,因爲實施取決於最終目標。 –

+0

爲了擴展Alexey的評論:Y示例的X使用較低級別的api調用將文本內容寫入頁面中的絕對位置。如果您的表格在不同頁面上的大小或位置發生變化,這可能不是一個好方法。這就是爲什麼我們需要更多地瞭解項目的大綱和目標。 –

+0

我更新了我的問題描述。該表格不會更改所有頁面的大小或位置。這將是非常友善的,如果你還可以告訴我,如果表格會改變立場,那麼解決方案是什麼?替換文字? – cao

回答

1

首先,爲了適應整個表,你會想增加Document下邊距:

Document document = new Document(pdf); 
document.setBottomMargin(100); 

之後,你仍然可以使用Canvas添加一個表,而不是段。我將根據您提到的PageXofY示例來回答問題。

首先,創建一個平常Table

Table table = new Table(UnitValue.createPercentArray(new float[] {50, 50})); 
table.addCell(new Cell(4, 1)); 
table.addCell(new Cell().add("Filename: ")); 
table.addCell(new Cell().add("Issue date: ")); 
Paragraph pageXofY = new Paragraph(). 
     add("Page " + String.valueOf(pageNumber) + " of "). 
     add(new Image(placeholder)); 
table.addCell(new Cell().add(pageXofY)); 
table.addCell(new Cell().add("Location: ")); 

需要注意的是,我們仍然使用佔位符FormXObject存儲的總頁數。

side更改爲字體大小,在我們的示例中爲12。創建這樣的佔位符:

placeholder = new PdfFormXObject(new Rectangle(0, 0, 2 * side, side)); 

writeTotal()方法稍作修改。文本的y位置已更改爲-descent

public void writeTotal(PdfDocument pdf) { 
    Canvas canvas = new Canvas(placeholder, pdf); 
    canvas.showTextAligned(String.valueOf(pdf.getNumberOfPages()), 
     0, -descent, TextAlignment.LEFT); 
} 

現在,所有你需要的就是這個表添加到適當的位置在頁面上:

float marginX = 36; 
Canvas canvas = new Canvas(pdfCanvas, pdf, new Rectangle(marginX, 10, pageSize.getWidth() - marginX * 2, 100)); 
canvas.add(table); 
pdfCanvas.release(); 

結果如下:

enter image description here

+0

魔法,它的作品,非常感謝。我的應用程序中唯一非常小的問題是將文本「Y」與「Page X of」對齊,我必須在'writeTotal()'中調整一點變量'descent'。一個**新問題是TOC(內容表),當TOC頁面從文檔的末尾移到文檔的開頭時,看起來會導致產生Y的頁面X的問題。我應該開始一個新帖子還是繼續問這裏? – cao

+0

我認爲最好開始新帖子,因爲TOC的問題與頁腳表問題無關。 –