разбить огромный PDF-файл объемом 40000 страниц на отдельные страницы, itextsharp, outofmemoryexception

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

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

Теперь мне нужно разделить огромный файл на отдельные страницы, затем попытаться прочитать некоторые данные получателя со страниц 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?

13
задан tomsv 9 August 2011 в 16:07
поделиться