微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 使用iTextSharp锁定PDF以防编辑

我使用iTextSharp创建了一个C#程序,用于阅读PDF,附加社会DRM内容,然后保存文件.如何锁定这个新的PDF,进一步编辑?

我希望用户能够在不输入密码的情况下查看该文件,而我不介意选择/复制操作,但我记住删除社交DRM的能力.

解决方法

加密您的PDF文档.简单的HTTP处理程序工作示例让您开始:
<%@ WebHandler Language="C#" Class="lockPdf" %>
using System;
using System.Web;
using iTextSharp.text;
using iTextSharp.text.pdf;

public class lockPdf : IHttpHandler {
  public void ProcessRequest (HttpContext context) {
    HttpServerUtility Server = context.Server;
    HttpResponse Response = context.Response;
    Response.ContentType = "application/pdf";
    using (Document document = new Document()) {
      PdfWriter writer = PdfWriter.GetInstance(
        document,Response.OutputStream
      );
      writer.SetEncryption(
// null user password => users can open document __without__ pasword
        null,// owner password => required to __modify__ document/permissions        
        System.Text.Encoding.UTF8.GetBytes("ownerPassword"),/*
 * bitwise or => see iText API for permission parameter:
 * http://api.itextpdf.com/itext/com/itextpdf/text/pdf/PdfWriter.html
 */
        PdfWriter.ALLOW_PRINTING
            | PdfWriter.ALLOW_copY,// encryption level also in documentation referenced above        
        PdfWriter.ENCRYPTION_AES_128
      );
      document.open();
      document.Add(new Paragraph("hello world"));
    }
  }
  public bool IsReusable { get { return false; } }
}

内联评论应该是不言自明的.见PdfWriter documentation.

您还可以使用使用PdfEncryptor class的PdfReader对象加密PDF文档.换句话说,您还可以执行此操作(未测试):

PdfReader reader = new PdfReader(INPUT_FILE);
using (MemoryStream ms = new MemoryStream()) {
  using (pdfstamper stamper = new pdfstamper(reader,ms)) {
    // add your content
  }
  using (FileStream fs = new FileStream(
    OUTPUT_FILE,FileMode.Create,FileAccess.ReadWrite))
  {
    PdfEncryptor.Encrypt(
      new PdfReader(ms.ToArray()),fs,null,System.Text.Encoding.UTF8.GetBytes("ownerPassword"),PdfWriter.ALLOW_PRINTING
          | PdfWriter.ALLOW_copY,true
    );
  }  
}

原文地址:https://www.jb51.cc/csharp/93008.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐