大量の PDF ファイルがあり、ユーザーがそれらをダウンロードできるように Web サイトを作成しています。
- 彼らの名前で透かしを入れてください。
- 情報を入力できるように、フォーム フィールドは開いたままにしておきます。
- ドキュメントを印刷して保存できるようにしたい
ドキュメントに透かしを入れて開くと、アドビからメッセージが表示されます。
「ドキュメントは作成後に変更されたため、拡張機能は使用できなくなりました。作成者に連絡してください...」
本「iText-in-Action」によると、これはセキュリティ上の問題です (第 8 章)。それらを開くには2つの方法があるようです:
- 使用権を削除する: これは上記の #3 を破ります。
- 追加モードで開く:フォームにウォーターマークを付けると、フィールドを編集できなくなります。
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.