C# Itextsharp自定义密码消息
您好,我可以使用Itextsharp PdfEncryptor在pdf加密文件中自定义消息“请输入您的生日和卡的最后6位数字”吗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
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,也不能使用任何其他工具。