簡體   English   中英

通過使用iText展平pdf來改變文本的不同位置

[英]Different position of text by flatten pdf with iText

我對iText和pdf中的展平表單字段有疑問。

我將包含在Acrobat中創建的表單字段的pdf提交給我的java方法。 在一個網站上,我創建了一個表格來填寫pdf中的表格字段。 表單字段已正確填寫,但是一旦我展平文檔,文本就會移到稍有不同的位置。 最大的區別在於多行表單字段。 文本在左上方字段的邊界處。 在Acrobat中,在展平之前,文本頂部有填充。

這是我的Java代碼,用於調用iText的方法:

PdfReader template = new PdfReader(templ);
XfdfReader xfdfReader = new XfdfReader(xfdf);
OutputStream outputStream = new FileOutputStream(output);
PdfStamper stamper = new PdfStamper(template, outputStream, '\0');

AcroFields form = stamper.getAcroFields();                                            

Set<String> fields = form.getFields().keySet();

form.setFields(xfdfReader);

stamper.setFreeTextFlattening(true);            
stamper.setFormFlattening(true);    
stamper.close();
template.close();

有人知道為什么我將pdf展平時文本會移動嗎? 如何避免這種情況?

我已經嘗試過使用iText的不同版本。 從4.X版本到5.X。 差異出現在所有版本中。

盡管我嘗試移動iText代碼中的表單字段,但隨后整個字段都在移動並且位置的差異更大且無法預測。

在我的項目中,文本必須與Acrobat中的位置完全相同,因此我必須找到解決此錯誤行為的方法。 我希望有人能幫助我。

感謝您的幫助。

多年來,PDF文件中字段基線的位置已更改。 您甚至會看到差異,具體取決於所使用的Acrobat版本。

除非您知道確切的偏移量,否則無法解決您的問題。 如果這樣做,則可以在setExtraMargin()平文檔時使用setExtraMargin()方法更改所有字段的偏移量。

我們創建了此方法來處理基線與預期不同的特定表格。 對於不同的形式,選擇的值可以不同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM