1

だから、私は一種のテキストエディタであるプログラムを持っています。出力形式をpdfにする必要がありますが、そのPDFを再度編集できるようにする必要があります。プログラムの出力がそれほど複雑になることはなく、PDFを作成するのが私のプログラムなので、作成したPDFから直接読み取ることもできますが、PDFに別のファイルを添付するだけで読みやすくなると思いました。

ただし、ファイルがPDFに添付されていることをユーザーに見せたくありません。

/EmbeddedFilesに変更することでPDFリーダーをだますことができることをどこかで読んだことがあります/Embeddedfiles。そうすれば、処理中のPDFに添付されたファイルがあることを検出できなくなります。

問題は、PDFを読んでその変更を行い、編集して元に戻す前に、どうすればPDFを読み取ることができるかということです。

私はPDFを「破損」させようとしているので、ここではPDFライブラリが役に立たないと思います。ある種の文字列として解析してから、変更したい部分文字列を探す必要があると思います。しかし、私はPDF形式に慣れていないので、それが本当に単純なのか、それともそれを行うための特定の方法があるのか​​を知ることができません...

4

2 に答える 2

2

PDFは、添付ファイルを編集して貼り付けるための形式ではありません(非表示かどうかはわかりませんが、機能するかどうかはわかりません)。あなたのトリックがうまくいくと仮定して:

  • これは有効なPDFですか?読者を騙したいと思うかもしれませんが、無効なPDFを作成することになり、使用しようとしている方法よりも心配になります。

  • PDFリーダーが無効な構文をサポートするように機能を更新した場合はどうなりますか?つまり、突然ファイルが表示され、意図が失われます。

最善の方法は次のとおりです。

ユーザーにドキュメントを作成させます。テキストをプログラムフォルダに保存します。PDFを作成します。編集するときは、PDFのタイトルに基づいてテキストドキュメント(またはその他)をロードするだけです。繰り返しになりますが、PDFは編集形式ではありません。

または、ジョナサンのソリューションを使用します。これは、テキストをローカルに保存することを回避します。

いずれにせよ、PDFファイルを破壊することは望ましくありません。

于 2012-09-06T12:11:52.060 に答える
1

バイナリ形式の独自のバージョンを作成してPDFと呼ぶだけの場合は、PDFファイルの任意の辞書オブジェクトに「カスタム」エントリを追加して、そのエントリにデータストリームを関連付けることができます。エントリはPDF仕様の範囲外になるため、すべての(適切に実装された)読者はそれを無視できるはずです。おそらく、 PdfDictionary.put
を使用してiTextでこれを行うことができ、たとえば、非標準データをカタログ辞書に追加することができます。

于 2012-09-06T14:01:00.620 に答える