1

関数の一部としてpdfを生成するソフトウェアを作成しました。iTextPDF Javaライブラリを使用してPDFを生成しています。私のソフトウェアのデモ版では、次のコードを使用してテキストの透かし (「デモ ソフトウェア」など) を追加しました。

PdfContentByte under = writer.getDirectContentUnder(); BaseFont baseFont = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.EMBEDDED); under.beginText(); under.setColorFill(BaseColor.RED); under.setFontAndSize(baseFont, 25); under.showTextAligned(PdfContentByte.ALIGN_CENTER," demo software",250, 470,55); under.endText();

その後、PDF から Word へのコンバーターを使用して .docx 形式に変換しました。結果の docx ファイルには透かしが含まれず、内容も簡単に編集できるため、デモ ソフトウェアを提供するという唯一の目的がなくなりました。

PDFからWordへのコンバーターがそれを削除できないように、永続的な透かしをどのように達成できますか。

私の頭に浮かぶアイデアの1つは、テキストをpdfに入れる代わりに、最初にページのすべてのテキストを画像に変換してから、それらの画像で構成されるpdfを作成する方法があるということです。しかし、iTextPdf を使用してこれを達成する方法がわかりません。

4

1 に答える 1

2

を暗号化してPDF、所有者のパスワードなしで変更できないようにすることができます。を生成した後、を入力としてPDF作成しPDFStamperPDF次のようにpdfを暗号化します。

final PdfReader reader = new PdfReader(your_input_stream);
final PdfStamper stamper = new PdfStamper(reader, your_output_stream);

stamper.setEncryption(PdfWriter.ENCRYPTION_AES_128 | PdfWriter.DO_NOT_ENCRYPT_METADATA,
        "your_user_password", "your_owner_password", PdfWriter.ALLOW_PRINTING);

stamper.close();

ちなみに、ハードコードされた所有者パスワードは使用しないことをお勧めします。ファイルが生成された後は所有者のパスワードは必要ないので、SHAたとえば20文字の英数字のランダムな文字列のハッシュにすることをお勧めします。

于 2012-07-13T11:57:25.023 に答える