2017-06-19 34 views
0

私はインタラクティブフォームフィールドを含むPDFテンプレートを作成しました。 PDFテンプレートは、1行のテキストフィールドと複数行の両方から構成されています。いくつかは左に揃えられ、いくつかは右に揃えられます。いくつかの複数行フィールドのテキストを右揃えにしたいが、デフォルトの左揃えを表示している。また、変更を加えて、フィールドのプロパティで右揃えを選択しました。しかし、まだ運がありません。PDFフォームで右揃えのテキストフィールドを揃える方法は?

私は、i-textを使ってフォームフィールドを動的に入力しています。すべての配置設定はPDFで行われますが、複数行のフィールドはテンプレートデザインごとに正しく配置されていません。画像

enter image description here

と私はChromeブラウザでその動的に作成されたPDFをプレビューするときにも、アライメントが右に変更されていないを参照してください。

左側に揃っているフィールドは、ファインで動作しています。誰も私が行方不明を示唆することはできますか?

+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(); 

は公式のiTextのFAQにもHow to align AcroFields?参照してください。

あなたは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(); 

は公式のiTextのFAQにもHow to align AcroFields?を参照してください。

ご覧のとおり、iText 7コードはよりエレガントでわかりやすいものです。

+0

こんにちはブルーノ、私は私のPDFの塗りつぶしのiText 7を使用しています。私のiTextコードに変更を加えることなく動作させる方法はありますか? –

+0

Stack Overflowに関するプログラミングの質問をしています。あなたの答えは 'setJustification()'メソッドを使用しています)。コードを変更せずにソリューションを入手したいと言っていますか?あなたの質問の性質を完全に理解しているかどうかはわかりません。幸いなことに、あなたはいつもフォームのアラインメントを設定できます。そうすれば、実際にコードを変更する必要はありません。私は私の答えを更新しました。 –

+0

私はiText 7のための上記のコードを試しましたが、それは動作しません。さらに私のアプリケーションにはプレビュー機能があります。ユーザーはブラウザのPDFビューアでプレビューできます。プレビュー時には左に表示されていますが、ファイルをダウンロードしてAdobeで開くと、配置が機能します。 –

関連する問題