Исключение нехватки памяти в системе PDFsharp - PullRequest
0 голосов
/ 11 марта 2020

У меня довольно большой PDF-документ (более 1 ГБ), но меня интересует только его первая страница. Я делал следующее, чтобы избежать полного заполнения PDF в памяти.

PdfPage inputpdf = PdfReader.Open(filepath).Pages[0];

Но даже это не работает, и я получаю исключение системы из памяти через раз. У любого есть идеи, как работать с большими файлами, не сохраняя полную информацию в памяти. Все, что я ищу, это одна страница.

Ниже приведена трассировка стека.

System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
   at PdfSharp.Pdf.IO.Lexer.ReadStream(Int32 length)
   at PdfSharp.Pdf.IO.Parser.ReadObject(PdfObject pdfObject, PdfObjectID objectID, Boolean includeReferences, Boolean fromObjecStream)
   at PdfSharp.Pdf.IO.PdfReader.Open(Stream stream, String password, PdfDocumentOpenMode openmode, PdfPasswordProvider passwordProvider)
   at PdfSharp.Pdf.IO.PdfReader.Open(String path, String password, PdfDocumentOpenMode openmode, PdfPasswordProvider provider)

PS Я работаю над .NET Core, Azure function EP1 model. (3,5 ГБ памяти)

1 Ответ

1 голос
/ 11 марта 2020

PDFsharp считывает весь документ при вызове PdfReader.Open(), и добавление .Pages[0] совсем не уменьшает необходимую память.

Если ваш код работает в 32-битном режиме, попробуйте переключиться в 64-битный режим на преодолеть барьер в 2 ГБ.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...