iText5 for .NET ライブラリを使用して PDF ファイル内の #name# のような文字列を置き換えるにはどうすればよいですか? 調べてみましたが、解決策が見つかりませんでした。
質問する
2755 次
2 に答える
5
残念ながら、PDFはマークアップ言語を使用していないため、これを行う簡単な方法はありません。adobe acrobatのようなPDFリーダーでテキスト選択が機能する方法は、基本的に光学式文字認識を介して行われ、文字の近接性によって単語の境界が決まります。
スタイルと座標で構成される文字定義(例:「a」)を格納するPDFドキュメントを考えることができます。したがって、文字列の実際の表現はありません。
Itextsharpおよび同様のライブラリは、マークアップ言語で作業しているような印象を与えるビルダーパターンを使用します。
解決策を提供することはできませんが、根本的な問題をよりよく理解していただければ幸いです。
于 2012-12-16T18:23:00.160 に答える
1
コメントと回答のすべての発言にもかかわらず、説明したことを本当に実装する必要がある場合は、次のようにすることを検討してください。
- 検索されたプレースホルダー テキストの位置とサイズを返すカスタム RenderListener 実装と連携してパーサー パッケージのクラスを使用して、ページ コンテンツ内のプレースホルダーを検索します。
- PdfStamper を使用して、プレースホルダーの上に白い四角形を描画します。
- 同じ PdfStamper を使用して、長方形の上に置換を印刷します。
この手順にはいくつかの欠点があります。
- プレースホルダーはまだ pdf に存在し、カバーされているだけです。したがって、ビューアからのコピー&ペーストなどのテキスト抽出ルーチンによって見つけることができます。
- 何もリフローされていません。したがって、プレースホルダーの直後にテキストがある場合は、置換文字列が長すぎないことを確認する必要があります。それよりも短い場合は、ギャップが表示されます。
これらの欠点を受け入れることができない場合は、コンテンツ ストリームの操作に飛び込む必要があります。これは、一般的なドキュメントでは非常に難しく、罠に満ちています。
于 2012-12-17T10:24:24.997 に答える