C# Itext 7-PdfReader未打开,所有者密码错误

C# Itext 7-PdfReader未打开,所有者密码错误,c#,asp.net,pdf-generation,itext7,pdf-reader,C#,Asp.net,Pdf Generation,Itext7,Pdf Reader,我正在使用最新的Itext7来填写文档,并收到以下错误:iText.Kernel.Crypto.BadPasswordException:PdfReader未使用所有者密码打开 所以我环顾了一下网络,我发现有些人用PdfReader.unethicalreading=true找到了解决这个错误的方法

我正在使用最新的Itext7来填写文档,并收到以下错误:iText.Kernel.Crypto.BadPasswordException:PdfReader未使用所有者密码打开 所以我环顾了一下网络,我发现有些人用
PdfReader.unethicalreading=true找到了解决这个错误的方法
以下是我的代码:

 string src = @"C:\test1.pdf";
    string dest = @"C:\Test2.pdf";
    PdfDocument pdfDoc = new PdfDocument(new PdfReader(src), new PdfWriter(dest));
    PdfAcroForm form = PdfAcroForm.GetAcroForm(pdfDoc, true);
    IDictionary<String, PdfFormField> fields = form.GetFormFields();
    PdfFormField toSet;
    fields.TryGetValue("Name", out toSet);
    toSet.SetValue("Some text");
string src=@“C:\test1.pdf”;
字符串dest=@“C:\Test2.pdf”;
PdfDocument pdfDoc=新PdfDocument(新PDF阅读器(src)、新PDF编写器(dest));
PdfAcroForm form=PdfAcroForm.GetAcroForm(pdfDoc,true);
IDictionary fields=form.GetFormFields();
PdfFormField-toSet;
字段.TryGetValue(“名称”,out-toSet);
设置值(“某些文本”);

您需要像这样更改代码:

string src = @"C:\test1.pdf";
string dest = @"C:\Test2.pdf";
PdfReader reader = new PdfReader(src);
reader.setUnethicalReading(true);
PdfDocument pdfDoc = new PdfDocument(reader, new PdfWriter(dest));
PdfAcroForm form = PdfAcroForm.GetAcroForm(pdfDoc, true);
IDictionary<String, PdfFormField> fields = form.GetFormFields();
PdfFormField toSet;
fields.TryGetValue("Name", out toSet);
toSet.SetValue("Some text");
string src=@“C:\test1.pdf”;
字符串dest=@“C:\Test2.pdf”;
PdfReader读取器=新PdfReader(src);
读者。设置不道德阅读(正确);
PdfDocument pdfDoc=新的PdfDocument(读卡器、新的PdfWriter(dest));
PdfAcroForm form=PdfAcroForm.GetAcroForm(pdfDoc,true);
IDictionary fields=form.GetFormFields();
PdfFormField-toSet;
字段.TryGetValue(“名称”,out-toSet);
设置值(“某些文本”);
这将允许您违反文档原始作者定义的权限。这也证明了设置这些权限已经过时,因为自从PDF成为ISO标准以来,删除这些权限不再受到惩罚