0

大量の PDF ファイルがあり、ユーザーがそれらをダウンロードできるように Web サイトを作成しています。

  1. 彼らの名前で透かしを入れてください。
  2. 情報を入力できるように、フォーム フィールドは開いたままにしておきます。
  3. ドキュメントを印刷して保存できるようにしたい

ドキュメントに透かしを入れて開くと、アドビからメッセージが表示されます。

「ドキュメントは作成後に変更されたため、拡張機能は使用できなくなりました。作成者に連絡してください...」

本「iText-in-Action」によると、これはセキュリティ上の問題です (第 8 章)。それらを開くには2つの方法があるようです:

  1. 使用権を削除する: これは上記の #3 を破ります。
  2. 追加モードで開く:フォームにウォーターマークを付けると、フィールドを編集できなくなります。

Adobe からのエラー メッセージは問題を説明しています。透かしのあるドキュメントのコンテンツを変更したため、フォーム フィールドがブロックされました。透かしを入れたドキュメントを開いて新しいファイルに保存してから閉じてみました。次に、それを再度開き、フォーム フィールドのブロックを解除しようとしましたが、機能しません。

これが可能かどうか誰にもわかりますか?テンプレートについて読んだことがあります。ドキュメントをテンプレートに変換する作業のため、これが解決策になるかどうかはわかりませんか? これが役立つかどうか誰にもわかりますか?

以下は、画像を透かしとして使用するためのコードのサンプルですが、テキストも追加してみました。

        PdfReader reader = new PdfReader(sourceFile.FullName);
        //reader.RemoveUsageRights();

        var fileStream = new FileStream(outputPath, FileMode.Create, FileAccess.ReadWrite);

        PdfStamper pdfStamper = new PdfStamper(reader, fileStream, '\0', true);


        Image image = Image.GetInstance(imagePath);
        image.SetAbsolutePosition(250, 300);

        for (int i = 1; i <= reader.NumberOfPages; i++) // Must start at 1 because 0 is not an actual page.
        {
            PdfContentByte pdfPageContents = pdfStamper.GetUnderContent(i);

            pdfPageContents.AddImage(image);
        }

        pdfStamper.FormFlattening = false; // enable this if you want the PDF flattened. 
        //bool have = pdfStamper.PartialFormFlattening("test");
        pdfStamper.Close(); // Always close the stamper or you'll have a 0 byte stream. 
4

2 に答える 2

1

Reader 対応のドキュメントは、Adobe が所有する秘密鍵を使用してデジタル署名されています。Adobe Reader が Adob​​e の公開鍵を使用してその署名を検証できる場合、追加機能 (入力済みのフォームを保存できるなど) が有効になります。

透かしの追加は、デジタル署名されたドキュメントに対して許可されているアクションの一部ではありません。リーダーの有効化をトリガーするデジタル署名を無効にせずに、目的を達成する方法は絶対にありません。

要するに、あなたは不可能なことをしようとしています。これは、アドビのソフトウェアを使用することによってのみ実現できます。これは、リーダーを壊した後に有効にするためにアドビの秘密鍵が必要になるためです。

于 2012-10-19T06:36:44.190 に答える
0

いいアドバイス。

コンピュータを再起動するたびに、アドビは更新が必要だと文句を言います。私が最後に望んでいるのは、ハックで立ち往生することです。これは将来は機能しない可能性があります。

私の試みの1つは、PDFのテキストレイヤーを変更していると見なされないことを期待して、PDFの別のレイヤーに透かしを作成することでしたが、これは機能しませんでした。上司は、元のPDFからテキストを取得し、それを新しいドキュメントにコピーして、透かしを入れることを考えていました。新しいPDFを作成しても、それは変更されていると見なされ、フィールドは編集できません。

まだ立ち往生

于 2012-10-19T13:52:30.500 に答える