0

PDFに出力するプログラムがありますが、そこから読み取れるようにしたいと思います。

プログラムが読み取れる独自のデータ型を考え出しましたが、どういうわけかPDFファイルに含める必要があります(複数のファイルはありません。単一の出力ごとに1つのファイルが必要です)。また、このデータはユーザーには見えず、検出できないようにする必要があります。

PDF辞書について聞いたことがありますが、その方法がわかりません(または別の方法があるかどうか)。XMP / XMLファイルを使用したくないので、データはKey-Valueよりも複雑です。

誰かが私に次のことを可能にするコードの例行をいくつか書いてくれるといいでしょう。

  • iTextを使用してPDFに新しい辞書を追加する
  • iTextを使用してデータを入力します
  • iTextを使用してファイル内でそれを見つけます
  • iTextを使用してそれから読む
4

2 に答える 2

3

Adobe Illustrator と同じようなことをしたい。Adobe Illustrator から PDF を作成すると、元の AI ファイルをカプセル化できます。これにより、PDF を編集できる印象が得られます。実際には、Adobe Illustrator は AI ファイルを取得し、それを使用して編集し、更新された AI から PDF を再作成します。

この情報はどこに保存されますか? ISO-32000-1 セクション 14.5 を参照してください。

適合製品は、この辞書を、そのドキュメント、ページ、またはフォームに関連する個人データを格納する場所として使用できます。このようなプライベート データは、それを生成する適合製品にとって意味のある情報 (グラフィック エディタのオブジェクト グループに関する情報や Adob​​e Photoshop® で使用されるレイヤー情報など) を伝えることができますが、汎用の適合リーダーでは無視される場合があります。

ここで何を聞かれるかわかりません。上記のようなアドバイスが必要な場合: たとえば、PieceInfo エントリをルート ディクショナリ (カタログ) に追加します。これはすべて文書化されていますね。ISO 仕様を読み、「iText in Action」のパート 4 を読みます。

あなたの質問が次の場合:私がする必要があることを実行するコードを書いてください。それは多かれ少なかれ、このサイトの目的に反していると思います。

于 2012-09-11T09:52:56.320 に答える
1

データを文字列として 16 進エンコードし、次のように画面外に描画できます。

cb.showTextAligned(PdfContentByte.ALIGN_LEFT,"HIDDENDATA_"+ hexencodeddata, 2000f,2000f, 0f);

HIDDENDATA_ を検索するすべての文字列の読み取り処理

別の方法は、注釈を使用することです

 public void addAnnotation(PdfWriter writer,
        Document document, Rectangle rect, String text) {
        PdfAnnotation annotation = new PdfAnnotation(writer,
            new Rectangle(
                rect.getRight() + 10, rect.getBottom(),
                rect.getRight() + 30, rect.getTop()));
        annotation.setTitle("Text annotation");
        annotation.put(PdfName.SUBTYPE, PdfName.TEXT);
        annotation.put(PdfName.OPEN, PdfBoolean.PDFFALSE);

        annotation.put(PdfName.NAME, new PdfName(text));
        writer.addAnnotation(annotation);
    }

そして、このようなものを使って読んでください。

http://downloads.snowtide.com/javadoc/PDFTextStream/2.3.2/com/snowtide/pdf/PDFTextStream.html

于 2012-09-11T10:02:24.913 に答える