我有一个可填写,可保存的PDF文件,其中包含所有者密码(我无权访问)。我可以在Adobe Reader中填写它,导出FDF文件,修改FDF文件,然后导入它。
然后我尝试用iText for .NET来做。我无法从我的PdfReader创建PdfStamper,因为我没有向读者提供所有者密码。有没有办法以编程方式执行此操作或必须重新创建文档?
即使使用FdfReader也需要PdfStamper。我错过了什么吗?任何合法的东西 - 我很确定我可以破解文件,但我不能。具有讽刺意味的是,重新创建它可能会没问题。
答案 0 :(得分:5)
此行将绕过iTextSharp中的编辑密码检查:
PdfReader.unethicalreading = true;
答案 1 :(得分:3)
[我在发布这个问题几个月后发现了这个问题,我现在正在为在搜索中遇到此问题的任何人发布此解决方案。]
我处于完全相同的情况:我的客户有一个带有可填写字段的PDF,我需要以编程方式访问。不幸的是,PDF受密码保护,他们没有密码,所以我发现无法使用他们的文件。
我发现iTextSharp版本4.0.4(及更高版本)强制实施密码限制,而早期版本则没有。
所以我下载了4.0.3版,确定它有效。在我的情况下,我甚至不必更改我的代码以使用这个旧版本。
答案 2 :(得分:0)
除非有其他人插话,否则我会认为答案是“否”
我以未加密的形式重新制作PDF。
答案 3 :(得分:0)
两件重要的事情
PdfReader.unethicalreading = true
设置为阻止BadPasswordException。 所以你需要做的就是:
PdfReader.unethicalreading = true;
using (var pdfReader = new PdfReader("form.pdf"))
{
using (var outputStream = new FileStream("filled.pdf", FileMode.Create, FileAccess.Write))
{
using (var stamper = new iTextSharp.text.pdf.PdfStamper(pdfReader, outputStream, '\0', true))
{
stamper.AcroFields.Xfa.FillXfaForm("data.xml");
}
}
}