通常、編集用の形式としてPDFを使用するのは悪い選択です。固定フィールドを持つフォームがあれば簡単です。対話形式のPDFテンプレートを作成します。このフォームでは、AcroFormテクノロジに基づいて、固定座標と固定サイズのフィールドを定義します。これらのフィールドにコンテンツを追加することができます。
このアプローチの大きな欠点の1つは、柔軟性の欠如です。前の段落で「固定」という言葉を3回使用したことに気付きましたか?テキストがあらかじめ定義されたフィールドに収まらない場合、あなたは不運です。フィールドの大きさが過大であれば、空白がたくさんあります。このアプローチは、データがどのようなものになるかを予測できれば素晴らしいものです。典型的なユースケースは、チケットまたはバウチャーです。たとえば、空のフォームは、自動システムが名前、日付、時刻、座席番号を置くことができる2つのフィールドだけで、本当にいいページです。
これは、あなたのスクリーンショットに表示する例のための最良の方法ではありません。テキストのすべての行、すべての単語、すべての文字の位置は、事前にわかっています。短い単語を長い単語に置き換えたい場合(またはその逆の場合)、完全なページの各行のすべての位置を再計算する必要があります。それは狂気です。このようなアイデアは、デザインスキルの低い人にしか見えません。
もっと良いアイデアは、テンプレートをHTMLとして保存することです。私たちはHTMLのスニペットを持っているのiTextのpdfHTMLチュートリアルのインスタンスchapter 5を参照してください:
<html>
<head>
<title>Invitation to SXSW 2018</title>
</head>
<body>
<u><b>Re: Invitation</b></u>
<br>
<p>Dear <name>SXSW visitor</name>,
we hope you had a great SXSW film festival experience last year.
And we would like to invite you to the next edition of SXSW Film
that takes place from March 9 until March 17, 2018.</p>
<p>Sincerely,<br>
The SXSW crew<br>
<date>August 4, 2017</date></p>
</body>
</html>
<name>
タグと<date>
タグがHTMLに存在しないので、実際に、それは、実際にHTMLではありません。すべてのHTMLプロセッサ(ブラウザなどpdfHTML)は、これらのタグを無視し、タグが<span>
たかのように自分のコンテンツを扱う:
それは純粋のコンテキストでこのようなタグを持つようにあまり意味がありません。 HTMLですが、pdfHTMLの場合はかなり意味があります。 pdfHTMLLを使用すると、カスタムタグを設定して、以下に示すPDFファイルのように見える結果を持つことができます:「ジョン・ドウ」のための文書で
ルックと「ブルーノLowagie」のドキュメントとの比較します。 "John Doe"という名前は私の名前よりもはるかに短いので、その最初の行にはもっと多くの言葉が当てはまります。テキストはきれいに流れる(我々はまた、両側のテキストを正当化することもできる)。あなたのアプローチでは、この「フロー」を達成することは不可能です。なぜなら、PDFテンプレートをうまくリフローさせることができないからです。
OK、私はそれを得ます、あなたはおそらく、と言いますが、実際の面はどうですか?あなたはJava/.Netライブラリについて話していますが、LaravelとAngular.jsを使って作業しています。、私は私が原因PDFの性質上、あなたはLaravelやAngular.jsのための何かいいのPDFツールを見つけるとは思わないし、それらの開発環境は、(私の意見では、これらの技術がうまく再生されないことを伝えるまずましょう一緒に)。私の意見にかかわらず、Amazon環境で働いているので、これはあなたにとって大きな問題ではありません。 AWSはJavaをサポートしており、pdfHTMLの作業に必要なJavaコードは最小限です。 pdfHTMLチュートリアルで書いたコードサンプルのほとんどは、15行より短いです。なぜJavaとpdfHTMLを試してみませんか?
開始するには、ここでいくつかの回答を見てください。https://stackoverflow.com/questions/34049956/generate-pdf-from-html-using-pdfmake-in-angularjs –
PDFは処理チェーンの最終フォーマットです。特に、コンテンツを簡単に変更できるようには設計されていないため、既存のコンテンツをリフローする必要があります。 AcroFormフォームフィールドを含むようにテンプレートを変更して塗りつぶすことも考えられますが、それは挿入された名前によって多かれ少なかれ大きなギャップを残します。また、テンプレートを他の最終フォーマットにリモデリングすることもできます。 html、その形式で値を挿入し、pdfに変換します。 – mkl