2

既存のPDFを開きます。保護を確認し、保護されている場合はパスワードを要求し、次のコマンドで開きます。

        PdfReader pdfReader = null;
        Stream outputStream = null;
        PdfStamper pdfStamper = null;

        try
        {
            pdfReader = GetPdfReaderObject();
            outputStream = new FileStream(filePathDestination, FileMode.Create, FileAccess.Write, FileShare.None);
            pdfStamper = new PdfStamper(pdfReader, outputStream);

                PdfLayer layer = new PdfLayer("watermark", pdfStamper.Writer);

                for (int pageIndex = 1; pageIndex <= pdfReader.NumberOfPages; pageIndex++) {
                    pdfStamper.FormFlattening = false;
                    iTextSharp.text.Rectangle pageRectangle = pdfReader.GetPageSizeWithRotation(pageIndex);
                    PdfContentByte pdfData = pdfStamper.GetOverContent(pageIndex);

                    pdfData.BeginLayer(layer);

                    PdfGState graphicsState = new PdfGState();
                    graphicsState.FillOpacity = 0.5F;
                    pdfData.SetGState(graphicsState);
                    pdfData.BeginText();

                    iTextSharp.text.Image watermarkImage = iTextSharp.text.Image.GetInstance(System.Drawing.Image.FromFile(watermarkImagePath), ImageFormat.Png);

                    float width = pageRectangle.Width;
                    float height = pageRectangle.Height;

                    watermarkImage.SetAbsolutePosition(width / 2 - watermarkImage.Width / 2, height / 2 - watermarkImage.Height / 2);

                    pdfData.AddImage(watermarkImage);
                    pdfData.EndText();
                    pdfData.EndLayer();
                }
            }
            pdfStamper.Close();
            outputStream.Close();
            outputStream.Dispose();
            pdfReader.Close();
            pdfReader.Dispose();

        } catch (Exception e) {
            ....
        }
    }

変更後、保存しましたが、保護が破棄されました。

保護が破壊されるのはなぜですか?元のドキュメントの保護を保存して、変更したドキュメントに追加するにはどうすればよいですか。

よろしく

4

2 に答える 2

1

どのバージョンの iText を使用していますか?

パスワードで保護された PDF をownerパスワードを使用して開き、 で操作するPdfStamperと、元のパスワード保護がすべて削除されました。これは iText 5.3.5 で変更されました。変更ログを参照してください:

重要: ドキュメントにスタンプを押すときに、元の所有者のパスワードが保持されるようになりました。

つまり、5.3.5 より前のすべての iText バージョンでは、所有者パスワードが失われます。5.3.5 以降では、保持する必要があります。

于 2013-10-24T13:16:48.490 に答える