允许使用itextsharp在密码安全性pdf中提取页面

时间:2014-09-11 09:14:55

标签: c# pdf-generation itextsharp

我不知道是否可以创建启用了密码安全性的pdf,这也允许提取页面。

我没有在itextsharp中找到任何允许启用页面提取的属性。

任何人都有任何想法?

properties

这是我想要启用的属性。

非常感谢。

2 个答案:

答案 0 :(得分:1)

我已经看了ISO-32000-2草案中的权限位,我将它们与iText中提供的参数(用ALL_CAPS编写)进行了比较:

bit 1:  Not assigned
bit 2:  Not assigned
bit 3:  Degraded printing: ALLOW_DEGRADED_PRINTING
bit 4:  Modify contents: ALLOW_MODIFY_CONTENTS
bit 5:  Extract text / graphics: ALLOW_COPY
bit 6:  Add / Modify text annotations: ALLOW_MODIFY_ANNOTATIONS
bit 7:  Not assigned
bit 8:  Not assigned
bit 9:  Fill in fields: ALLOW_FILL_IN
bit 10: **Deprecated** ALLOW_SCREEN_READERS
bit 11: Assembly: ALLOW_ASSEMBLY
bit 12: Printing: ALLOW_PRINTING

当我将规格与您的屏幕截图进行比较时,我认为权限如下:

  • 打印:ALLOW_DEGRADED_PRINTING或ALLOW_PRINTING
  • 更改文档:ALLOW_MODIFY_CONTENTS
  • 评论:ALLOW_MODIFY_ANNOTATIONS
  • 表单字段填写或签名:ALLOW_FILL_IN
  • 文件装配:ALLOW_ASSEMBLY
  • 内容复制:ALLOW_COPY
  • 已启用内容辅助功能:ALLOW_SCREENREADERS

我找不到任何引用页面提取的权限位。我已经尝试设置ISO-32000-2中记录的所有标志,但它们没有导致将页面提取设置为允许。

我尝试了两件事:

首先我尝试设置未分配的位:位1,2,7,8,13,14。这并没有改变任何东西。然后我在Acrobat中打开了一个测试文档,我尝试找到一个允许页面提取的设置:

enter image description here

我找不到任何。

由于ISO-32000中没有描述权限,并且因为似乎没有办法在Acrobat中设置此权限,我倾向于认为无法设置此权限。查看“允许”的唯一方法是使用所有者密码打开文档。

请在找到使用Acrobat设置此权限的方法后立即更新您的问题。我正在使用Acrobat XI Pro。

另一个注意事项:以您的方式设置权限(仅使用所有者密码而不使用用户密码)只是心理 NOT < / em>一种全面的技术方法来加强保护。请参阅How to read PDFs created with an unknown random owner password?,了解如何从仅使用所有者密码保护的PDF中删除权限。

答案 1 :(得分:0)

要使用iTextSharp保护PDF文件,同时允许用户提取文本和图像,但阻止他们编辑,保存和打印PDF文件,我这样做 -

//Obviously, use the correct namespace
using iTextSharp.text.pdf;


//Create an instance of PdfReader, associate your PDF file
PdfReader reader = new PdfReader(“yourFile.PDF”);

//Secure your file with a password(yourPDFpassword), set the security to
// PdfWriter.ALLOW_COPY – to allow for security with content extraction

PdfEncryptor.Encrypt(reader, output, true, "", yourPDFpassword, PdfWriter.ALLOW_COPY);