在PDF中當涉及到布局問題時(不再是自動地添加文本、圖片等等,對元素在頁面上的位置有一定的要求),有時我們希望將一些圖像或者文本放置在某頁的指定位置,為實現該功能,我們將使用PdfContentByte類。
PdfContent對象可以通過在使用Writer對象中使用getDirectContent()方法來得到該對象。例:
PdfWriter writer= PdfWriter.GetInstance(document, new FileStream("D:\\hellowrold.pdf", FileMode.OpenOrCreate));
PdfContentByte cb=writer.DirectContent;
簡單圖形的繪制:
我們可以使用諸如moveTo和lineTo方法移動到頁面上當前位置然后畫一條直線到其他位置。例如
cb.LineWidth=10f;
cb.moveTo(100,700);
cb.lineTo(200,800);
cb.stroke();
模板(Form xObjects)
在頁眉和頁腳的解決方案時,我們可以選擇定義一小塊添加到每一頁的信息,實際上,該小塊信息寫到了文件的每一個新頁上。這並不是最經濟的解決方案,更好的方法是將該信息作為一個Form Xobject 僅在文檔中添加一次,在其可見位置重復出現。
1.創建一個PdfTemplate
2.創建PdfTemplate的最好方法是調用pdfContentByte對象中的createTemplate方法:PdfTemplate template=cb.createTemplate(500,200);
這樣,該模板的寬度為500,高度為200。通過該模板我們可以做像PdfContentByte同樣的事情
template.moveTo(0,200);
template.lineTo(500,0);
template.stroke();
添加一個文檔到模板,通過下面一樣在絕對位置添加一個模板
cb.addTemplate(template,0,400);
