Itext 7 SplitByOutlines — итоговый документ остается открытым и не может быть закрыт

#itext #itext7

#itext #itext7

Вопрос:

Я написал пользовательский разделитель, чтобы разделить мой PDF-файл по контурам / закладкам. Это работает, но проблема в том, что последний документ остается открытым и поврежден. В документе показано, что имеется 71 контур, но разделитель возвращает только 70, хотя он создал 71 документ.

Вот пользовательский разделитель:

 class CustomSplitter : PdfSplitter
{
    private int _order;
    private readonly string _destinationFolder;
    private readonly string _podName;
    private readonly IList<string> _splitFileNames;

    public CustomSplitter(PdfDocument pdfDocument, string destinationFolder, string podName, IList<string> splitFileNames) : base(pdfDocument)
    {
        _destinationFolder = destinationFolder;
        _order = 0;
        _podName = podName;
        _splitFileNames = splitFileNames;
    }

    protected override PdfWriter GetNextPdfWriter(PageRange documentPageRange)
    {
        string splitFileName = _destinationFolder   "\"   _podName   _order     ".pdf";
        _splitFileNames.Add(splitFileName);
        return new PdfWriter(splitFileName);
    }
} 
  

Мне нужно отслеживать имена файлов, чтобы я мог их переименовывать. Я вызываю свой пользовательский разделитель с помощью этого кода:

 IList<string> splitFileNames = new List<string>();
PdfSplitter pdfSplitter = new CustomSplitter(pdfDoc, yearDir, fileName, splitFileNames);
IList<PdfDocument> splitDocs = pdfSplitter.SplitByOutlines(outlineNames);
  

Это первый раз, когда я публикую здесь. Я выполнил поиск и не нашел ничего, что использовало бы SplitByOutlines.

Спасибо.

Комментарии:

1. Привет, пожалуйста, приложите PDF-файл, чтобы воспроизвести проблему

2. Привет, как мне это сделать? Я не вижу способа прикрепить файлы.

3. Просто используйте любую службу обмена файлами (OneDrive, Dropbox и т.д.) И опубликуйте ссылку на файл.