Я пытаюсь написать метод для шифрования существующих PDF-и выписывая зашифрованный PDF в поток памяти, используя следующий код:iTextSharp PdfStamper последовательно только выписывая 15 байт
public byte[] ProtectPdfStreamWithPassword(
string filePath,
string password)
{
using (var outStream = new MemoryStream())
{
using (var reader = new PdfReader(filePath))
{
using (var stamper = new PdfStamper(reader, outStream))
{
var passwordBytes =
Encoding.ASCII.GetBytes(password);
stamper.SetEncryption(
passwordBytes,
passwordBytes,
PdfWriter.AllowPrinting,
PdfWriter.ENCRYPTION_AES_256);
return outStream.ToArray();
}
}
}
}
Я следующие тот же шаблон, который я видел, используется в другом месте в Интернете, но у меня возникает проблема, когда в MemoryStream, который записывается только когда-либо, записано 15 байт, когда файл, переданный в PdfReader, имеет около 8 КБ. Я не столкнулся с этой проблемой при работе с FileStreams, но я предпочел бы использовать MemoryStreams здесь, если это возможно. Любая помощь будет оценена по достоинству.
Да, это правильно. Вы не закрывали объект «stamper». Предположим, что вы не использовали 'using', вы бы использовали' PdfStamper stamper = новый новый PdfStamper (reader, outStream); 'и затем' stamper.Close(); '* before *, используя метод ToArray() , –