Я получаю огромные файлы PDF с большим количеством данных. Текущий PDF составляет 350 МБ и имеет около 40000 страниц. Разумеется, было бы неплохо получить меньшие PDF файлы, но с этим я должен работать сейчас: - (
Я могу открыть его в приложении для чтения акробатов с некоторой задержкой при загрузке, но после этого быстрый просмотрщик акробатов.
Теперь мне нужно разбить огромный файл на отдельные страницы, а затем попытаться прочитать некоторые данные получателя из страниц pdf, а затем отправить одну или две страницы, которые каждый получатель должен получить каждому конкретному получателю.
Вот мой очень маленький код, используя itextsharp:
var inFileName = @"huge350MB40000pages.pdf";
PdfReader reader = new PdfReader(inFileName);
var nbrPages = reader.NumberOfPages;
reader.Close();
Что происходит, так это во второй строке "новый PdfReader", а затем остается там, возможно, 10 минут, процесс достигает примерно 1,7 ГБ, а затем я получаю исключение OutOfMemoryException.
Я думаю, что "новый PdfReader" пытается прочитать весь PDF в памяти.
Есть ли какой-нибудь другой/лучший способ сделать это? Например, можно ли каким-то образом прочитать только часть файла PDF в памяти, а не все сразу? Может ли он работать лучше, используя некоторую другую библиотеку, чем itextsharp?