java pdf分页显示_使用iText“重新分页”PDF
Disclaimer:
我正在使用iText 5.我知道這通常是不贊成的(與使用iText 7相比),但我正在處理使用iText 5的大量遺留代碼,升級不受我的控制 .
Requirements:
A "simple" PDF / A作為輸入接收(僅文本,這些是從RTF生成的),以及與所需的第一頁長度(以英寸為單位)對應的浮點值 .
必須輸出與輸入PDF相同的PDF / A,除了它的分頁如下:第一頁長度=輸入值;每個后續(不是第一個或最后一個)頁面將填充標準頁面長度;最后一頁將被截斷在距離頁面底部最近的內容之下的恒定點數 . 請注意,輸入和輸出寬度將是相同且恒定的 .
Progress / Approach:
我擴展了 SimpleTextExtractionStrategy 以生成包含字體信息(大小和族,粗體或斜體等)的XML以及位置信息(相對于輸入的第一頁左上角的原點的絕對坐標系統PDF)對于從輸入PDF中提取的每個"span"文本 .
然后,我逐頁生成一個新的PDF(根據上面列出的要求,每個頁面都是所需的長度),根據每個新頁面的邊界使用LINQ過濾提取的XML信息,并在適當的位置添加適當格式的文本使用 ColumnText.ShowTextAligned(...) .
Problem:
上面概述的方法很好 . 它生成具有所需頁面結構的PDF,但某些信息在翻譯時丟失,即彩色文本和帶下劃線的文本 . 雖然不應在這些PDF中看到彩色文本,但絕對必須檢測帶下劃線的文本 .
這組要求還應包括帶表格的PDF . 我最初計劃實現一個不同的模塊,該模塊遵循表格PDF的相同界面,因為它們是從RTF生成的PDF中單獨生成和使用的,而且iText內置了相對強大的表格功能 .
上面提到的兩個問題,再加上我所描述的方法源于重用現有代碼的嘗試,這讓我相信完全不同的方法可能是必要的,或者至少要好得多 . 在我看來,應該有一種方法來捕獲內容字節信息并根據需要剪輯它以“重新分頁”輸入PDF,只擔心移動沿頁面邊界的內容 .
基本上,我正在尋找(基于iText)推薦更好的方法 . 偽代碼類型的答案或只是對可能有用的類/接口的建議是可接受的 . 雖然將文本和表格放在一起會很好,但任何與一個或另一個相關的建議也會受到贊賞 . 我已經仔細閱讀了iText網站上的大部分可用文檔和其他SO問題,但還沒有找到我正在尋找的內容 .
請注意,此問題中不包含任何代碼,因為我正在尋找與我嘗試過的完全不同的高級方法 .
Edit:
我以前沒有注意到它,但是我重用字體的方式(類似于this)導致了一些意想不到的(但是記錄在案)這樣的行為 . 似乎我需要避免在文本級別提取重新分頁的信息,因為很難確保輸入和輸出之間字體的連續性 .
總結
以上是生活随笔為你收集整理的java pdf分页显示_使用iText“重新分页”PDF的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP 汉字转拼音Class类
- 下一篇: caffe使用ctrl-c不能保存模型