#c# #winforms #itext
#c# #winforms #itext
Вопрос:
Пытаюсь зашифровать несколько pdf-файлов разных размеров, и я заметил, что в pdfreader он выдает исключение из памяти, если размер pdf составляет около 1 ГБ, есть ли здесь работа? Я считаю, что у меня достаточно места для хранения.
//Encrypt the pdf using (Stream input = new FileStream(inputpdfpath, FileMode.Open, FileAccess.Read, FileShare.Read)) { using (Stream output = new FileStream(outPDF, FileMode.Create, FileAccess.Write, FileShare.None)) { PdfReader reader = new PdfReader(input); PdfEncryptor.Encrypt(reader, output, true, pdfpassword, null, PdfWriter.ALLOW_SCREENREADERS | PdfWriter.AllowPrinting | PdfWriter.ALLOW_MODIFY_CONTENTS); } } File.Move(pdffilepath, Path.Combine(WorkingFolder, fileName));// move original files to another folder File.Copy(outPDF, pdffilepath);// copy temp file (password encrypted) then use original name (temp file should be deleted) File.SetAttributes(outPDF, FileAttributes.Normal);
Комментарии:
1. «Я считаю, что у меня достаточно места для хранения». — Это убеждение явно неоправданно. Теоретически у вас может быть достаточно оперативной памяти, но достаточно ли у вас ее на самом деле?
2. У меня установлено 32 ГБ оперативной памяти, разве этого недостаточно? Д: (Я ничего не обрабатываю, кроме этого)
3. Вы создали профиль своего приложения? Существуют ли какие-то настройки, ограничивающие память? Просто потому, что у вас установлено 32 гигабайта, это не значит, что среде выполнения .Net разрешено использовать все это. Хотя я тоже ожидал бы, что у него будет достаточно свободного места, но кто знает …
4. Проект gt; Свойства gt;gt; Вкладка Сборка, снимите флажок «Предпочитаю 32-разрядную версию». Тебе это не нравится.
5. кажется, я не могу найти 32-разрядную версию, но я изменил в диспетчере конфигурации платформу на x64 ( пришлось создать это), так как она была установлена на «Любой процессор». Я заметил, что размер файла с 1,4 ГБ изначально (не зашифрованный) стал 300 МБ (зашифрован с помощью itextsharp) ._. что меня смущает, почему.