2014-04-01 105 views
0

我試圖在我的PDF頁腳中添加圖像和頁面號。我的問題是我無法顯示圖像上的頁碼。以下是我的代碼。使用iText的PDF頁腳中的圖像上的文本

public void onEndPage(PdfWriter writer, Document document) { 
    int pageNo=writer.getPageNumber()-this.pageNumber+1; 
    Integer dummy=pageNo; 
    String pageNoString=dummy.toString(); 
    PdfContentByte cbb = writer.getDirectContent(); 

    try { 
     ColumnText column = new ColumnText(cbb); 
     PdfPTable newtable = new PdfPTable(1); 
     newtable.setTotalWidth(530); 
     newtable.setLockedWidth(true); 
     Image img = Image.getInstance("C:/Users/sathesh/Desktop/Warfiles/PDFFiles/Footer.png"); 

     PdfPCell imageCell=new PdfPCell(); 
     PdfPCell textCell=new PdfPCell(new Paragraph("Disclaimer text",new Font(Font.FontFamily.COURIER, 6, Font.NORMAL))); 
     imageCell.setBorder(Rectangle.NO_BORDER); 
     textCell.setBorder(Rectangle.NO_BORDER); 
      imageCell.setImage(img); 
      ColumnText.showTextAligned(cbb, 
        Element.ALIGN_LEFT, new Phrase(pageNoString,FontFactory.getFont(FontFactory.COURIER,12,new BaseColor(0xFF, 0x00, 0x00))), 50, 95, 0); 
      newtable.addCell(imageCell); 
     newtable.addCell(textCell); 
     column.addElement(newtable); 
     column.setSimpleColumn(30, 130, 570, 45,5f, Element.ALIGN_RIGHT | Element.ALIGN_BOTTOM |Element.ALIGN_JUSTIFIED_ALL); 
     } 
     column.go(); 
     catch(Exception e) 
     { 
       e.printStackTrace(); 
     } 
} 
+0

爲什麼你難以添加文本?爲什麼不使用'ColumnText.showAligned()',這使得定位文本變得更容易(不需要計算正弦和餘弦)。此外,我沒有看到使用'column'而不使用'go()'方法的觀點。您還可以在複合模式下使用「ColumnText」來定義對齊方式(但這隻適用於文本模式)。最後:爲什麼你認爲使用'Element.ALIGN_BOTTOM'可以使用'setSimpleColumn()'。我很抱歉,但你的代碼已經無法修復了。請重新從頭開始。 –

+0

我忘了在此代碼中添加'column.go();'。我更新了我的代碼。我需要幫助才能在圖片上方顯示頁面。 –

+1

我的其他評論呢?另外,想想福爾摩斯和沃森:初級邏輯可以幫助你。如果先添加文本然後添加圖像,那麼圖像是否覆蓋文本是否正常?爲什麼不切換添加文本和圖像,以便文本覆蓋圖像。我真的希望你考慮扔掉你的代碼並重新開始寫出體面的代碼。 'setTextMatrix()'方法不應該被不明白參數含義的人使用。使用'ColumnText.showAligned()',那些必須閱讀代碼的人會感謝你! –

回答

1

您有:

ColumnText.showTextAligned(cbb, Element.ALIGN_LEFT, new Phrase(pageNoString,FontFactory.getFont(FontFactory.COURIER,12,new BaseColor(0xFF, 0x00, 0x00))), 50, 95, 0); 
newtable.addCell(imageCell); 
newtable.addCell(textCell); 
column.addElement(newtable); 
column.setSimpleColumn(30, 130, 570, 45,5f, Element.ALIGN_RIGHT | Element.ALIGN_BOTTOM |Element.ALIGN_JUSTIFIED_ALL); 
column.go(); 

這首先添加的文字,然後用覆蓋包含圖像中的文本,因此圖像覆蓋了文本。

正如我在我的評論說,你應該使用基本的邏輯和嘗試這個辦法:

newtable.addCell(imageCell); 
newtable.addCell(textCell); 
column.addElement(newtable); 
column.setSimpleColumn(30, 130, 570, 45,5f, Element.ALIGN_RIGHT | Element.ALIGN_BOTTOM |Element.ALIGN_JUSTIFIED_ALL); 
column.go(); 
ColumnText.showTextAligned(cbb, Element.ALIGN_LEFT, new Phrase(pageNoString,FontFactory.getFont(FontFactory.COURIER,12,new BaseColor(0xFF, 0x00, 0x00))), 50, 95, 0); 

現在用圖像的數據表中添加第一和文字寫在圖像的頂部。

+1

謝謝布魯諾。現在我學到了一件新事物:)。 –

相關問題