2017-06-19 297 views
0

我創建了一個包含交互式表單域的pdf模板。 PDF模板由單行文本字段和多行兩個字段組成。有些左對齊,有些右對齊。我想要一些多行字段文本右對齊,但它顯示默認的左對齊。我也做了更改並在字段屬性中選擇了正確的對齊方式。但仍然沒有運氣如何在PDF表單中對齊右邊的多行文本字段?

我正在使用i-text來動態填寫表單字段。所有的對齊設置都在PDF中完成,但多行字段沒有按照我的模板設計正確對齊。看到圖像

enter image description here

而且還當我預覽動態創建PDF的Chrome瀏覽器的排列沒有改變的權利。

與左對齊的字段正在正常工作。任何人都可以建議我失蹤?

+0

您是否閱讀過文檔?你在使用iText 5還是iText 7? –

回答

0

您不是在告訴我們您是否需要一種手動更改對齊方式(使用帶有GUI的工具)或編程方式(使用iText)的解決方案。

如果您想手動更改字段的對齊方式,只需在Adobe Acrobat中打開PDF模板(表單),然後選擇更改AcroForm字段的選項。從左向右更改對齊方式。

如果您想以編程方式更改對齊方式,請告訴我們您是否使用iText 7(您應該)或iText 5(您可能會)。

如果您使用的iText 7,排列設置是這樣的:

PdfDocument pdfDoc = new PdfDocument(new PdfReader(src), new PdfWriter(dest)); 
PdfAcroForm form = PdfAcroForm.getAcroForm(pdfDoc, true); 
Map<String, PdfFormField> fields = form.getFormFields(); 
PdfFormField field; 
field = fields.get("personal.name"); 
field.setJustification(PdfFormField.ALIGN_LEFT); 
field.setValue("Test"); 
field = fields.get("personal.loginname"); 
field.setJustification(PdfFormField.ALIGN_CENTER); 
field.setValue("Test"); 
field = fields.get("personal.password"); 
field.setJustification(PdfFormField.ALIGN_RIGHT); 
field.setValue("Test"); 
field = fields.get("personal.reason"); 
field.setValue("Test"); 
pdfDoc.close(); 

How to align AcroFields?看到官方iText的常見問題。

如果您使用的iText 5,排列設置是這樣的:

PdfReader reader = new PdfReader(src); 
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest)); 
AcroFields form = stamper.getAcroFields(); 
AcroFields.Item item; 
item = form.getFieldItem("personal.name"); 
item.getMerged(0).put(PdfName.Q, new PdfNumber(PdfFormField.Q_LEFT)); 
item = form.getFieldItem("personal.loginname"); 
item.getMerged(0).put(PdfName.Q, new PdfNumber(PdfFormField.Q_CENTER)); 
item = form.getFieldItem("personal.password"); 
item.getMerged(0).put(PdfName.Q, new PdfNumber(PdfFormField.Q_RIGHT)); 
form.setField("personal.name", "Test"); 
form.setField("personal.loginname", "Test"); 
form.setField("personal.password", "Test"); 
form.setField("personal.reason", "Test"); 
stamper.close(); 
reader.close(); 

How to align AcroFields?看到官方iText的常見問題。

正如您所看到的,iText 7代碼更優雅,更易於理解。

+0

嗨布魯諾,我使用iText 7填寫我的pdf。有沒有什麼辦法可以讓我的iText代碼不做任何修改就可以工作。 –

+0

你正在問一個關於Stack Overflow的編程問題,我給了你答案(在你的情況下使用'setJustification()'方法)。現在你說你想獲得一個解決方案,而不必更改你的代碼?我不確定我是否完全理解你的問題的性質。幸運的是,您始終可以在表單中設置對齊方式。這樣,你確實不需要改變你的代碼。我已經更新了我的答案。 –

+0

我已經嘗試了iText 7的上述代碼,但stil無法正常工作。此外我的應用程序有預覽功能。用戶可以在瀏覽器pdf查看器中預覽它。它在預覽中顯示,但如果我下載該文件並在adobe中打開它的對齊工作。 –