Почему PDFBox сканирует шрифты во время преобразования изображений (PDF в Png) - PullRequest
0 голосов
/ 02 марта 2020

Я часто получаю их в своем приложении

o.a.pdfbox.pdmodel.font.PDSimpleFont : No Unicode mapping for 28 (8) in font NSWQSF+TimesNewRoman,Bold

Из-за этого, возможно, мое приложение выходит из памяти. Может кто-нибудь описать, почему каждая страница и все шрифты в pdf сохраняются в памяти при использовании PDFBox pdf для преобразования изображений?

Мой код:

        PDDocument document = null;
        int pageCounter = 0;
        try {
            document = PDDocument.load(file);
            document.setResourceCache(new PDFBoxResourceCache());
            PDFRenderer pdfRenderer = new PDFRenderer(document);
            pdfRenderer.setSubsamplingAllowed(true);
            for (PDPage page : document.getPages()) {
                ByteArrayOutputStream outputStream = null;
                BufferedImage bufferedImage = null;
                ++pageCounter;
                try {
                    bufferedImage = pdfRenderer.renderImageWithDPI(pageCounter - 1, 300, ImageType.RGB);
                    outputStream = new ByteArrayOutputStream();
                    ImageIOUtil.writeImage(bufferedImage, PAGE_FORMAT, outputStream);
                } catch (IOException e) {
                    throw e;
                } finally {
                    if (bufferedImage != null) {
                        bufferedImage.flush();
                        bufferedImage = null;
                    }
                    if (outputStream != null) {
                        try {
                            outputStream.close();
                            outputStream = null;
                        } catch (IOException ex) {
                            //
                        }
                    }
                }
            }
        } catch (Exception e) {
            throw e;
        } finally {
            if (document != null) {
                document.close();
            }
        }

Кэш

    private class PDFBoxResourceCache extends DefaultResourceCache {
        @Override
        public void put(COSObject indirect, PDXObject xobject) {
            // do nothing
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...