Раскрытие информации: я работаю евангелистом-разработчиком в Aspose.

учаю огромные PDF-файлы с большим количеством данных. Текущий PDF - 350 МБ и около 40000 страниц. Конечно, было бы неплохо получить PDF-файлы меньшего размера, но это то, с чем я должен работать сейчас :-(

Я могу открыть его в Acrobat Reader с некоторой задержкой при загрузке, но после этого Acrobat Reader работает быстро.

Теперь мне нужно разбить огромный файл на отдельные страницы, затем попытаться прочитать некоторые данные получателей со страниц pdf, а затем отправить одну или две страницы, которые каждый получатель должен получить для каждого конкретного получателя.

Вот мой очень маленький код, использующий itextsharp:

var inFileName = @"huge350MB40000pages.pdf";
PdfReader reader = new PdfReader(inFileName);
var nbrPages = reader.NumberOfPages;
reader.Close();

Что происходит, когда дело доходит до второй строки «new PdfReader», затем остается там в течение, возможно, 10 минут, размер процесса достигает около 1,7 ГБ, а затем я получаю исключение OutOfMemoryException.

Я думаю, что «новый PdfReader» пытается прочитать весь PDF в память.

Есть ли другой / лучший способ сделать это? Например, могу ли я как-то прочитать только часть файла PDF в память, а не все сразу? Может ли это работать лучше, используя какую-то другую библиотеку, чем itextsharp?

Ответы на вопрос(0)

Ваш ответ на вопрос