2013-06-24 46 views
26

我剛剛開始使用iText(5.4.2,最新版本),並且還有兩件事我還沒有成功實現。iText橫向定位和定位?

  • 在橫向上創建文檔。所有頁面都呈現肖像。
  • 將圖像插入給定位置(從頂部&左側數毫米)。

我有下面的代碼。 (不是10,並從它15個單位遠的要求)

Document d = new Document(PageSize.A4_LANDSCAPE,0,0,0,0); 
PdfWriter writer = PdfWriter.getInstance(d, new FileOutputStream("C:/test.pdf")); 
document.open(); 
document.newPage(); 
Image img = Image.getInstance(String.format("C:/file.png")); 
img.scaleToFit(400,240); 
document.left(100f); 
document.top(150f); 
document.add(img); 
document.close(); 

但頁面在縱向(而不是橫向)渲染和圖像被放在左上角。我究竟做錯了什麼?

回答

42

您正在使用PageSize.A4_LANDSCAPE,這是一個由貢獻者引入的變量,應該從未添加到主版本中。請改用PageSize.A4.rotate()

目前尚不清楚你要實現與線什麼:

document.left(100f); 
document.top(150f); 

這些都是getter方法,而不是制定者。看起來您似乎認爲PDF與HTML類似。這個假設是錯誤的。

如果您希望將圖像從左邊放置10個用戶單位,並從頂部放置15個用戶單位(在這種情況下,100和150是錯誤的值),您可以替換Document構造函數中的0值以定義10個用戶單位的左邊界和最高邊界15個用戶單位。

另一種方法是使用方法setAbsolutePosition()定義圖像的絕對位置。在這種情況下,您需要意識到座標系的方向應使得頁面的左下角的座標x = 0,y = 0用於從頭開始創建的文檔。

1
iTextSharp.text.Document pdfDoc = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4.Rotate(), 10f, 10f, 10f, 0f);