发送前如何在我的 pdf 中设置密码?

How do i set password in my pdf before sending it?

为了安全起见,我正在尝试在 pdf 中添加密码,然后再从各自的所有者发送密码,

这是将我的文件保存为word转pdf的代码。这是我想为 pdf 设置密码的地方,在发送之前我看不到任何参考在他们的 pdf 文件中有密码。

filepath = "C:\Users\" & Environ("Username") & "\Desktop\WindowsApplication2\Payslips\Payslip " & item.SubItems.Item(1).Text & " " & Format(dtpPayoutDate.Value, "MM-dd-yyyy") & ".pdf"
            oDoc.SaveAs(filepath, Word.WdSaveFormat.wdFormatPDF) 
            'oDoc.Password="trypw" This one did'nt work
            'oDoc.WritePassword = "trypw" This also did'nt work

这个是从他们的 outlook 或电子邮件发送文件

  Dim OutlookMessage As outlook.MailItem
                Dim AppOutlook As New outlook.Application
                Dim filereader1 As String = My.Computer.FileSystem.ReadAllText("C:\Users\" & Environ("Username") & "\Desktop\WindowsApplication2\email template.txt")

                    OutlookMessage = AppOutlook.CreateItem(outlook.OlItemType.olMailItem)
                    Dim Recipents As outlook.Recipients = OutlookMessage.Recipients
                    Recipents.Add(item.SubItems.Item(21).Text)
                    OutlookMessage.Subject = "Payslip " & Format(dtpPayoutDate.Value, "MM-dd-yyyy")
                    OutlookMessage.Body = filereader1
                    OutlookMessage.BodyFormat = outlook.OlBodyFormat.olFormatHTML
                    OutlookMessage.Attachments.Add(filepath)
                    OutlookMessage.Send()

编辑:我在我的 NuGet 中下载 PDFsharp,然后在发送后放入此代码。

 Dim document As PdfDocument = PdfReader.Open(filepath)
            Dim securitySettings As PdfSecuritySettings = document.SecuritySettings
            securitySettings.UserPassword = "user"
            securitySettings.OwnerPassword = "owner"
            securitySettings.PermitAccessibilityExtractContent = False
            securitySettings.PermitAnnotations = False
            securitySettings.PermitAssembleDocument = False
            securitySettings.PermitExtractContent = False
            securitySettings.PermitFormsFill = True
            securitySettings.PermitFullQualityPrint = False
            securitySettings.PermitModifyDocument = True
            securitySettings.PermitPrint = False

            document.Save(filepath)

感谢@Eugene Astafiev 提供一些参考

Word 不为 saving/creating 带有密码的 PDF 文件提供任何选项。这将需要具有该功能的软件,该软件还具有编程接口。

您可以使用 PDF 文件格式保存文档,然后使用 PDFSharp 库设置密码:

// 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);

有关详细信息,请参阅 PDFsharp Sample: Protect Document