【问题标题】:Password protecting a PDF file密码保护 PDF 文件
【发布时间】:2012-09-05 04:36:34
【问题描述】:

我有以下几点:

  • 每天创建 PDF 文件的例程 X。
  • 例程 Y 将此文件附加到 Outlook 电子邮件并将其发送给收件人。

以上两个都在 VBA 中。它们是从 C# 控制台应用程序调用的。

创建 PDF 后,我需要对其进行密码保护。 在不购买第三方软件的情况下通过 VBA 做到这一点非常麻烦。

使用 C# 最简单的解决方案是什么?

(我怀疑我们花费的金额与答案的复杂性之间存在反比关系!)

【问题讨论】:

  • 如果您只需要密码保护您的 pdf 文件,请使用 itextpdf.com 库。欲了解更多信息,请访问:stackoverflow.com/questions/370571/…
  • @DarshanJoshi:iText 不能免费用于商业用途。
  • @DanielHilgarth 有两个人投票结束了这个问题 - 我试图非常具体;我可以进行任何可能的修改以使其更容易接受吗?
  • @whytheq:我是投票结束这个问题的人之一。我的理由是没有具体问题。您要求提供一般指导。我从来没有做过 PDF 编辑——我的答案是五分钟谷歌搜索的结果。你可以自己做。
  • @DanielHilgarth 我认为很多人都使用 SO 作为第一个停靠港,因此保持这个问题的开放并不是一件坏事,因为您的答案既好又简洁,即可以避免使用 Google。虽然我怀疑在实现您的答案时我会有更多特定于代码的问题,所以代码仍然会在这里结束。感谢您的帮助。

标签: c#


【解决方案1】:

PDFSharp 应该能够使用密码保护 PDF 文件:

// Open an existing document. Providing an unrequired password is ignored.
PdfDocument document = PdfReader.Open(filename, "some text");

PdfSecuritySettings securitySettings = document.SecuritySettings;

// Setting one of the passwords automatically sets the security level to 
// PdfDocumentSecurityLevel.Encrypted128Bit.
securitySettings.UserPassword  = "user";
securitySettings.OwnerPassword = "owner";

// Don't use 40 bit encryption unless needed for compatibility reasons
//securitySettings.DocumentSecurityLevel = PdfDocumentSecurityLevel.Encrypted40Bit;

// Restrict some rights.
securitySettings.PermitAccessibilityExtractContent = false;
securitySettings.PermitAnnotations = false;
securitySettings.PermitAssembleDocument = false;
securitySettings.PermitExtractContent = false;
securitySettings.PermitFormsFill = true;
securitySettings.PermitFullQualityPrint = false;
securitySettings.PermitModifyDocument = true;
securitySettings.PermitPrint = false;

// Save the document...
document.Save(filename);

参考:
http://www.pdfsharp.net/wiki/ProtectDocument-sample.ashx

【讨论】:

  • 这看起来不错而且相对简单——它是完全开源的吗?即即使用于商业用途也是免费的?
  • @whytheq: Yes,即使在商业产品中也可以免费使用。
  • 今天下午有一场戏——很棒;我已经导入了所有的源代码文件夹……甚至对源代码有点了解!
  • @whytheq: 酷 :-) 我想指出,从您的代码中引用已编译的程序集就足够了。
  • ok 添加了这个后续SO question 并且 PdfSharp 团队回答了;他们似乎倾向于导入所有文件夹。我认为他们提到它增加了智能感知。对我来说,作为一个 c# 新手,我喜欢添加项目,因为当我将 using x 放在代码模块的顶部时,它让我了解了实际使用的内容;引用似乎有点黑盒。
猜你喜欢
  • 1970-01-01
  • 2017-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-21
  • 2011-12-23
  • 2018-11-06
相关资源
最近更新 更多