C# Itextsharp自定义密码消息

C# Itextsharp自定义密码消息,c#,itext,C#,Itext,您好,我可以使用Itextsharp PdfEncryptor在pdf加密文件中自定义消息“请输入您的生日和卡的最后6位数字”吗 public byte[] GenerateSoaCrystalPdf(SoaCustomerViewModel customer, out int totalPages, bool encryptFile = false) { var rptDoc = GenerateSoaCrystal(customer); // pr

您好,我可以使用Itextsharp PdfEncryptor在pdf加密文件中自定义消息“请输入您的生日和卡的最后6位数字”吗

  public byte[] GenerateSoaCrystalPdf(SoaCustomerViewModel customer, out int totalPages, bool encryptFile = false)
    {
        var rptDoc = GenerateSoaCrystal(customer);
        // process PDF file
        var stream = rptDoc.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
        // dispose the report document
        rptDoc.Close();
        rptDoc.Dispose();

        // create password-protected PDF
        using (var ms = new MemoryStream())
        {
            if (encryptFile)
            {
                // count number of pages
                using (var pdfReader = new PdfReader(stream))
                {
                    totalPages = pdfReader.NumberOfPages;
                    var password = customer.DateOfBirth + customer.CardNumber.NumbersOnly().Right(6);
                    PdfEncryptor.Encrypt(pdfReader, ms, true, password, password, PdfWriter.AllowScreenReaders);
                }
            }
            else
            {
                // TODO: fix error when calling PdfReader
                totalPages = 0;
                stream.CopyTo(ms);
            }
            return ms.ToArray();
        }
    }

据我所知,您不能,因为此消息是由用于查看文档的PDF阅读器定义的。

据我所知,您不能,因为此消息是由用于查看文档的PDF阅读器定义的。

是的,但是:ISO 32000(PDF规范)中没有支持此要求的内容。所以答案确实是:不,这是不可能的。不使用iText,也不使用任何其他工具。没错,但是:ISO 32000(PDF规范)中没有支持该要求的内容。所以答案确实是:不,这是不可能的。不能使用iText,也不能使用任何其他工具。