Я пытаюсь разделить один PDF-документ на несколько частей с помощью PDFsharp. Однако, так как файл имеет встроенные шрифты, я подумал, что он будет работать, если я сохраню входной документ как есть и повторно использую его несколько раз для создания новых выходных документов, если я удаляю различные страницы, пока у меня не появятся нужные страницы в выходном документе с все встроенные шрифты.
В качестве небольшого примера:
using (var currentOutputDocument = GetOutputDocumentFromInputDocument(path))
{
for (var i = 0; i < 5; i++)
{
document.Pages.RemoveAt(document.PageCount - 1);
}
currentOutputDocument.Save(path);
}
Однако этот код явно портит действительность PDF.
Онлайн PDF Checkers выдает мне следующее сообщение об ошибке:
The page reference in a destination is invalid.
В то время как Adobe Reader сообщает
The Document’s page tree contains invalid node.
Использую ли я PDFSharp в неверный путь или это просто ошибка?
При удалении первых 5 страниц со следующим кодом документ остается действительным. Я предполагаю, что это так, поскольку у страниц все еще есть свой исходный номер файла в данном файле PDF.
using (var currentOutputDocument = GetOutputDocumentFromInputDocument(path))
{
for (var i = 0; i < 5; i++)
{
document.Pages.RemoveAt(0);
}
currentOutputDocument.Save(path);
}
Я могу проверить это как в версиях PDF 1.5 и 1.7, так что я полагаю, что версия не виновата Вот. Тестовый документ можно найти здесь (хотя это всего 10 пронумерованных страниц, ничего особенного, поэтому его можно создать, если вы не хотите что-то скачивать).