0

iText5 for .NET ライブラリを使用して PDF ファイル内の #name# のような文字列を置き換えるにはどうすればよいですか? 調べてみましたが、解決策が見つかりませんでした。

4

2 に答える 2

5

残念ながら、PDFはマークアップ言語を使用していないため、これを行う簡単な方法はありません。adobe acrobatのようなPDFリーダーでテキスト選択が機能する方法は、基本的に光学式文字認識を介して行われ、文字の近接性によって単語の境界が決まります。

スタイルと座標で構成される文字定義(例:「a」)を格納するPDFドキュメントを考えることができます。したがって、文字列の実際の表現はありません。

Itextsharpおよび同様のライブラリは、マークアップ言語で作業しているような印象を与えるビルダーパターンを使用します。

解決策を提供することはできませんが、根本的な問題をよりよく理解していただければ幸いです。

于 2012-12-16T18:23:00.160 に答える
1

コメントと回答のすべての発言にもかかわらず、説明したことを本当に実装する必要がある場合は、次のようにすることを検討してください。

  1. 検索されたプレースホルダー テキストの位置とサイズを返すカスタム RenderListener 実装と連携してパーサー パッケージのクラスを使用して、ページ コンテンツ内のプレースホルダーを検索します。
  2. PdfStamper を使用して、プレースホルダーの上に白い四角形を描画します。
  3. 同じ PdfStamper を使用して、長方形の上に置換を印刷します。

この手順にはいくつかの欠点があります。

  • プレースホルダーはまだ pdf に存在し、カバーされているだけです。したがって、ビューアからのコピー&ペーストなどのテキスト抽出ルーチンによって見つけることができます。
  • 何もリフローされていません。したがって、プレースホルダーの直後にテキストがある場合は、置換文字列が長すぎないことを確認する必要があります。それよりも短い場合は、ギャップが表示されます。

これらの欠点を受け入れることができない場合は、コンテンツ ストリームの操作に飛び込む必要があります。これは、一般的なドキュメントでは非常に難しく、罠に満ちています。

于 2012-12-17T10:24:24.997 に答える