Я часто получаю их в своем приложении
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
}
}