2015-01-02 93 views
1

我正在使用iText庫來生成PDF文檔。在這樣的PDF中,我每頁添加多個圖像。Android:如何設置圖像大小將與文檔頁面大小相同?

iText

下面是生成PDF的代碼。

Document document = new Document(); 

PdfWriter writer = PdfWriter.getInstance(document, fos); 
writer.setPageEvent(new PageWithRectangle()); 

document.open(); 

for (int i = 0; i < listSelected.size(); i++) { 
    //PdfPTable table = new PdfPTable(1); 
    //table.setWidthPercentage(100); 
    document.newPage(); 
    Bitmap bMap = BitmapFactory.decodeFile(listSelected.get(i)); 
    // Bitmap rotated = Bitmap.createBitmap(bMap, 0, 0, 
    // bMap.getWidth(),bMap.getHeight(), null, true); 
    ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
    bMap.compress(Bitmap.CompressFormat.PNG, 100, stream); 
    Image image = Image.getInstance(stream.toByteArray()); 
    image.setBorder(Image.BOX); 
    image.setBorderWidth(10); 
    float documentWidth = document.getPageSize().getWidth() 
      - document.leftMargin() - document.rightMargin(); 
    float documentHeight = document.getPageSize().getHeight() 
      - document.topMargin() - document.bottomMargin(); 
    image.scaleToFit(documentWidth, documentHeight); 

    Log.e("Document - Image = Height", document.getPageSize().getHeight()+" - "+image.getScaledHeight()); 

    float leftMargin = document.getPageSize().getWidth() - image.getScaledWidth(); 
    float lMargin = leftMargin/2 ; 

    float topMargin = document.getPageSize().getHeight() - image.getScaledHeight(); 
    float tMargin = topMargin/2 ; 

    image.setAbsolutePosition(lMargin,tMargin); 
    /*PdfPCell cell = new PdfPCell(image); 
    cell.setHorizontalAlignment(Element.ALIGN_CENTER); 
    cell.setVerticalAlignment(Element.ALIGN_MIDDLE); 
    table.addCell(cell);*/ 

    document.add(image); 
} 
document.close(); 
  • 是否可以設置頁面大小是相同的圖像大小,因此,有沒有白色的頂部和底部邊緣?
  • 如何將頁面設置爲LANDSCAPE?
+0

可能重複的[寫入圖像到PDF文件在java](http://stackoverflow.com/questions/16786026/writing-image-into-pdf-file-in -java) –

回答

0

是否可以設置與圖像大小相同的頁面大小,所以頂部和底部的白色字段不會顯示?

這個問題已經回答了2013年5月:Writing image into pdf file in java

如何設置頁面景觀?

現在您正在創建A4格式的文檔。

Document document = new Document(); 

是等價的:

Document document = new Document(PageSize.A4, 36, 36, 36, 36); 

如果你想以90度(使縱向變成橫向)的旋轉創建一個A4頁面,那麼你可以這樣做:

Document document = new Document(PageSize.A4.rotate()); 

當然,您還可以創建具有所需尺寸的自定義對象Rectangle。這就是這個問題的答案是關於:Writing image into pdf file in java

相關問題