0

あるPDFファイルのコンテンツを別のPDFファイルの特定の場所(たとえば、2つの段落の間)に配置し、元のコンテンツを自動的に下にシフトして、新しいファイルの下に置かないようにすることは可能ですか?

そうでない場合、少なくともpdfページのコンテンツ部分のみの高さを取得することは可能ですか?

AcroFormsを使用したテンプレートがいくつかあります。1つは複数のページを含むメインテンプレートであり、他のファイルをスタンプして特定の場所に挿入する必要があります。

PdfWriter絶対測位を使用して出力をアセンブルすることでそれを行うことができますがPdfTemplate、それは少し醜いようです。

4

1 に答える 1

1

ここで複数の質問をするので、答えるときにそれぞれの質問を引用します。

あるPDFファイルのコンテンツを別のPDFファイルの特定の場所(たとえば、2つの段落の間)に配置し、元のコンテンツを自動的に下にシフトして、新しいファイルの下に置かないようにすることは可能ですか?

PDFは、(簡単に)リフローできる形式ではありません。そして、あなたの質問はリフローの最悪のケース(これは既存の段落への文章などのテキストの挿入です)に言及していませんが、それはすでに困難です。段落を下に移動する場合、たとえば、フッター行も下に移動したくない場合。残念ながら、フッターラインは(必然的に)フッターラインとしてマークされていません。コンテンツに属する画像を移動しますが、背景画像は移動しません。残念ながら、画像は前景または背景画像としてマークされていません。等pp。

本質的に、iTextにはそのような段落挿入のための便利なメソッドがなく、それらを備えたライブラリは、しばしば望ましくない結果を作成します。

そうでない場合、少なくともpdfページのコンテンツ部分のみの高さを取得することは可能ですか?

PDFページのコンテンツ部分は何ですか?ヘッダーとフッターを除外するという意味ですか?上記のように、ヘッダーとフッターはそのようにマークされていないため、(確実に)自動的に認識されません。したがって、ありません。それとも、すべてのページコンテンツが含まれる最小の長方形を意味しますか?その場合は、iText in Action —2ndEditionの第15章のサンプルShowTextMarginsをご覧ください。このサンプルはテキストを検索しますが、renderTextイベントだけでなく、renderImageにも反応するように、そこで使用されるものを拡張することで簡単に一般化できます。ただし、クリッピングパスは無視される可能性があります。TextMarginFinder

AcroFormsを使用したテンプレートがいくつかあります。1つは複数のページを含むメインテンプレートであり、他のファイルをスタンプして特定の場所に挿入する必要があります。

あなたはAcroformsについて言及します。フォーム要素はPDFページのコンテンツの一部ではなく、注釈として関連付けられています。注釈はページコンテンツよりも移動が簡単ですが、ページコンテンツ注釈が相互に属している場合は、両方を同時に移動する必要があります。

PdfWriterとPdfTemplateを使用して、絶対位置を使用して出力をアセンブルすることはできますが、それは少し醜いようです。

それはどのように醜いように見えますか?出力は醜いですか、それともコードがそれを生成していますか?

于 2013-01-16T09:28:01.760 に答える