Когда я пытаюсь преобразовать PDF в изображение, то для некоторых PDF-файлов я получаю ошибку «из памяти». Таким образом, я увеличил размер кучи, а затем снова получил ошибку для другого PDF-файла. пока что у меня нет утечки памяти из других объектов. Так в чем же причина этой памяти из-за ошибки? Было бы так, что изображение настолько велико (что не так, я думаю), что он потребляет кучу, или, может быть, pdfbox хранит буферизованное изображение каждой страницы в своей памяти, и это способствует увеличению размера кучи? Любое понимание было бы замечательно.PDF-рендеринг с использованием pdfbox
Вот ссылка на pdf, которую я пытаюсь сделать. https://drive.google.com/file/d/0B_Ke2amBgdpeNFFDem5KVVVzanc/view?usp=sharing Вот сегмент кода.
PDFRenderer pdfRenderer = new PDFRenderer(pdDoc);
BufferedImage image = pdfRenderer.renderImageWithDPI(page-1, 300,ImageType.GRAY);
//image=ImageHelper.convertImageToGrayscale(image);
ImageIOUtil.writeImage(image,"G:/Trial/tempImg.png", 300);
Пожалуйста, обратите внимание, что для этой конкретной проблемы Pdf была решена путем увеличения размера кучи, но то, что я хочу знать, что делает pdfbox хранит в буфере изображения в памяти и способствует размер кучи.
Вот еще один PDF, который столкнулся с той же проблемой даже после увеличения размера кучи. https://drive.google.com/file/d/0B_Ke2amBgdpedDBtaG1QcW1oYlU/view?usp=sharing В этом pdf мой код длится вечно при рендеринге страницы 44. Я не знаю, почему это происходит.
Возможно, добавьте размер того, что вы пытаетесь преобразовать, и фрагмент кода делает это – Zeromus
Я отредактировал свое сообщение и загрузил код и файл. – ANKIT
относительно использования памяти: если я не ошибаюсь, то в pdfbox используется много памяти (особенно с цветными изображениями), да, он хранит все эти страницы в памяти, даже если вам они не нужны (год назад или около того у них были планы по readOnDemand/удалить после использования, но я не обновлялся). вы можете попробовать использовать файл с царапинами для сохранения памяти, но он будет медленным. – Zeromus