C# 打开PDFSharp文档并保存将删除密码

C# 打开PDFSharp文档并保存将删除密码,c#,passwords,pdfsharp,C#,Passwords,Pdfsharp,由于两个不同的原因,我在两个不同的应用程序中使用PDFSharp。第一种是对文档进行密码保护,第二种是对文档进行水印保护。这些流程都在各自的应用程序/工作流中单独工作。问题在于,应用程序1只知道密码,而应用程序2只知道水印,应用程序1使用默认所有者密码和动态用户密码,应用程序2使用所有者密码打开文档以应用水印。问题是密码没有持久化,似乎PDFSharp在保存文档时忽略了以前的PDF密码 是否有一种方法可以在应用水印时保留安全设置,而无需再次明确定义密码 我在PDFSharp论坛上发布了这篇文章,

由于两个不同的原因,我在两个不同的应用程序中使用PDFSharp。第一种是对文档进行密码保护,第二种是对文档进行水印保护。这些流程都在各自的应用程序/工作流中单独工作。问题在于,应用程序1只知道密码,而应用程序2只知道水印,应用程序1使用默认所有者密码和动态用户密码,应用程序2使用所有者密码打开文档以应用水印。问题是密码没有持久化,似乎PDFSharp在保存文档时忽略了以前的PDF密码

是否有一种方法可以在应用水印时保留安全设置,而无需再次明确定义密码

我在PDFSharp论坛上发布了这篇文章,但是他们忽略了这篇文章,这不是一个好迹象?!


亲切的问候,

我认为这是PDF sharp的局限性,因为我在论坛上没有得到他们的回应或帮助。我打开了那里的代码,并进行了以下更改以更正错误。首先,我在SecurityHandler.cs类上添加了一个新属性

public string OwnerPassword
{
  set { SecurityHandler.OwnerPassword = value; }
}

/// <summary>
/// TODO: JOSH
/// </summary>
public bool MaintainOwnerAndUserPassword
{
    get { return SecurityHandler.MaintainOwnerAndUserPassword; }
    set { SecurityHandler.MaintainOwnerAndUserPassword = value; }
}
最后,我将PDFSecuritySettings.cs上的CanSave方法更改为:

    internal bool CanSave(ref string message)
{
  if (this.documentSecurityLevel != PdfDocumentSecurityLevel.None)
  {
    if ((SecurityHandler.userPassword == null || SecurityHandler.userPassword.Length == 0) &&
        (SecurityHandler.ownerPassword == null || SecurityHandler.ownerPassword.Length == 0) &&
        !SecurityHandler.MaintainOwnerAndUserPassword)
    {
      message = PSSR.UserOrOwnerPasswordRequired;
      return false;
    }
  }
  return true;
}
这应该允许您设置MaintainOwnerAndUserPassword设置,并且假设您已经拥有哈希用户名和密码,那么它应该可以正常工作


一遍又一遍。

我认为这是PDF sharp的局限性,因为我在论坛上没有得到他们的回应或帮助。我打开了那里的代码,并进行了以下更改以更正错误。首先,我在SecurityHandler.cs类上添加了一个新属性

public string OwnerPassword
{
  set { SecurityHandler.OwnerPassword = value; }
}

/// <summary>
/// TODO: JOSH
/// </summary>
public bool MaintainOwnerAndUserPassword
{
    get { return SecurityHandler.MaintainOwnerAndUserPassword; }
    set { SecurityHandler.MaintainOwnerAndUserPassword = value; }
}
最后,我将PDFSecuritySettings.cs上的CanSave方法更改为:

    internal bool CanSave(ref string message)
{
  if (this.documentSecurityLevel != PdfDocumentSecurityLevel.None)
  {
    if ((SecurityHandler.userPassword == null || SecurityHandler.userPassword.Length == 0) &&
        (SecurityHandler.ownerPassword == null || SecurityHandler.ownerPassword.Length == 0) &&
        !SecurityHandler.MaintainOwnerAndUserPassword)
    {
      message = PSSR.UserOrOwnerPasswordRequired;
      return false;
    }
  }
  return true;
}
这应该允许您设置MaintainOwnerAndUserPassword设置,并且假设您已经拥有哈希用户名和密码,那么它应该可以正常工作

彻底地