Удаление страниц с PDFSharp разрывы PDF-Standard - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь разделить один 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 пронумерованных страниц, ничего особенного, поэтому его можно создать, если вы не хотите что-то скачивать).

...