2

我想在 c#.net windows 应用程序面板或 adobe reader 中打开受密码保护的 pdf。

我的想法是我想通过系统传递密码并打开pdf。用户可以看到 pdf 但不能保存。甚至用户也可以将我们保存在他们的计算机中,当他们重新打开 pdf 时,文件会询问密码。这意味着当他们想阅读pdf时,他们必须使用系统,如果他们将pdf带到外面,他们将无法打开密码的cos。

我尝试使用 Adob​​e Pdf dll,这个无法传递密码。我也试过用itextsharp,这个可以传密码但是传密码后需要保存pdf。所以当我打开pdf时,文件没有密码。

我想通过系统直接打开受密码保护的pdf。我不想再保存了。

4

2 回答 2

5

有一个类似的问题,如何以编程方式打开受密码保护的 PDF 文件?我复制了该问题的一部分并将其放在这里。

public static void unprotectPdf(string input, string output) 
{ 
    bool passwordProtected = PdfDocument.IsPasswordProtected(input); 
    if (passwordProtected) 
    { 
        string password = null; // retrieve the password somehow 

        using (PdfDocument doc = new PdfDocument(input, password)) 
        { 
            // clear both passwords in order 
            // to produce unprotected document 
            doc.OwnerPassword = ""; 
            doc.UserPassword = ""; 

            doc.Save(output); 
        } 
    } 
    else 
    { 
        // no decryption is required 
        File.Copy(input, output, true); 
    } 
} 
于 2012-10-10T02:17:24.557 回答
0

如果我对您的理解正确,您想强制执行一些数字版权管理 (DRM)。

为了能够做到这一点,您需要对 PDF 查看组件进行一些控制,或者该组件必须受到足够的限制。否则,即如果您只是以某种方式将密码转发给 Adob​​e Acrobat,则该组件假定用户是文档的实际所有者,因此允许保存文件的未受保护副本。当然,如果您临时创建一个未受保护的副本,例如使用 iText(Sharp),则该临时文件很容易被抢走。

不幸的是,您没有明确选择“在 c#.net windows 应用程序面板内还是使用 adobe reader”是由您决定还是由用户决定。

因此,如果需要支持 Adob​​e Acrobat/Reader,您必须将 DRM 强制集成到这些产品中,参见。http://www.adobe.com/devnet/reader/topic_drm.html(“开发数字版权管理 (DRM) 插件”)。

另一方面,如果您有选择,您只需要一些合适的 PDF 查看器组件。不幸的是,我不知道可用于 .NET 的查看器。如果你使用 Java,JPedal 可以适当地定制。

于 2012-10-10T08:08:35.527 回答