gpt4 book ai didi

c# - itextsharp打开密码保护的文件修改它并采用保护

转载 作者:行者123 更新时间:2023-11-30 20:53:56 24 4
gpt4 key购买 nike

我打开现有的 pdf。检查保护并询问密码是否 protected 并使用以下命令打开它:

        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) {
....
}
}

修改后我保存了它,但保护被破坏了。

为什么保护被破坏了?如何保存原始文档的保护并将其添加到修改后的文档中。

问候

最佳答案

您使用 PdfStamper 来操作现有的 PDF。

对于任何来源的PDF:如果您希望结果被加密,您可以适本地使用SetEncryption方法。

看看 EncryptionPdf.cs ,尤其是它的方法EncryptPdf:

PdfReader reader = ...;
using (MemoryStream ms = new MemoryStream())
{
using (PdfStamper stamper = new PdfStamper(reader, ms))
{
stamper.SetEncryption(
USER, OWNER,
PdfWriter.ALLOW_PRINTING,
PdfWriter.ENCRYPTION_AES_128 | PdfWriter.DO_NOT_ENCRYPT_METADATA
);
}
return ms.ToArray();
}

这里的 USEROWNER 是您选择的用户和所有者密码。您可能想要使用一组不同的权限。

对于已经加密的源 PDF,您可以选择在附加模式下使用 PdfStamper(即使用 PdfStamper 构造函数和 bool append 参数设置为 true)。在这种情况下,原始加密也将应用于更新后的 PDF。

关于c# - itextsharp打开密码保护的文件修改它并采用保护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19565078/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com