Ну, мне не удалось получить эту работу с помощью PDFSharp, но я, наконец, смог использовать ITextSharp. Они выставляют статическое свойство «unethicalreading», которое позволяет вам открывать PDF-файлы, защищенные паролем - все равно не на 100%, почему это так, если Adobe Reader может открыть PDF без пароля ...
В любом случае, код теперь:
using (var pdfStream = new MemoryStream(_underlyingBytes))
{
PdfReader.unethicalreading = true;
using (var reader = new PdfReader(pdfStream))
{
if (reader.NumberOfPages < 1) throw new ArgumentException("PDF has no pages");
using (var document = new Document(reader.GetPageSizeWithRotation(1)))
{
using (var outputStream = new MemoryStream())
{
using (var pdfCopyProvider = new PdfCopy(document, outputStream))
{
document.Open();
var importedPage = pdfCopyProvider.GetImportedPage(reader, 1);
pdfCopyProvider.AddPage(importedPage);
document.Close();
reader.Close();
_underlyingBytes = outputStream.ToArray();
return this;
}
}
}
}
}
Это хорошо работает, и MemoryStream может быть легко заменен FileStream, если целью было записать первую страницу на диск.
Надеюсь, это поможет кому-то в будущем.