2017-02-17 39 views
3

我正在尋找用於佈局PDF文檔的選項,該文檔必須非常整齊和準確。PDFBox:在寫入PDPageContentStream或PDPage時剪輯文本

該文檔是一種報告並將數據顯示到現有背景上。 在某些情況下,文本大於它應該適合的房間。

我想將文本剪輯到允許的精確區域(這不是包裝或「縮進」,因爲文本是大部分時間數字)。

這是我尋找的效果(這是一個例子,我沒有考慮縮短字符串,我希望字符串保持不變,但實際上被剪切到允許的區域之外)。

enter image description here

謝謝, JM

回答

3

首先創建一個路徑,例如與PDPageContentStream.addRect()。然後致電PDPageContentStream.clip()。這將與您的路徑相交的當前剪貼路徑。然後繪製任何你想要裁剪的東西。

不要忘記把整個東西放在saveGraphicsState()restoreGraphicsState()之間,否則由於再次相交,剪切路徑在某個時候會變空。

要在開發過程中驗證剪切路徑是否正確,請將clip()呼叫替換爲stroke(),以便您可以看到它的位置。

+0

Hhmmm,我剛剛看到所有'PDPageContentStream'剪切方法都自動爲路徑執行'n'。爲什麼?爲什麼不同時撫摸和/或填充? – mkl

+0

@mkl「它總是這樣的」:-)我沒有看到有必要改變這種情況,我從來沒有在我看過的PDF中看到除了「n」之外的其他任何東西。 –

+0

Thxs @TilmanHausherr,它像一個魅力。如果可以的話,我想知道爲什麼在PDFBox中沒有高級功能。我想我們都必須發展自己的功能,左對齊,右對齊,裁剪,對齊文本和其他。我很驚訝這不是套件的一部分。任何想法爲什麼? – jmc34