From 2af4bdbcf1c71f98fb8e7ad56faa5d7561f6c0cc Mon Sep 17 00:00:00 2001 From: Gauthier Roebroeck Date: Mon, 30 Sep 2019 11:44:07 +0800 Subject: [PATCH] properly release open files after accessing PDF files (fixes #10) --- .../infrastructure/archive/PdfExtractor.kt | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/komga/src/main/kotlin/org/gotson/komga/infrastructure/archive/PdfExtractor.kt b/komga/src/main/kotlin/org/gotson/komga/infrastructure/archive/PdfExtractor.kt index 80ad2beaa..f39e952eb 100644 --- a/komga/src/main/kotlin/org/gotson/komga/infrastructure/archive/PdfExtractor.kt +++ b/komga/src/main/kotlin/org/gotson/komga/infrastructure/archive/PdfExtractor.kt @@ -18,21 +18,25 @@ class PdfExtractor : ArchiveExtractor() { private val resolution = 1536F override fun getPagesList(path: Path): List = - PDDocument.load(Files.newInputStream(path)).use { pdf -> - (0 until pdf.numberOfPages).map { index -> - BookPage(index.toString(), mediaType) + Files.newInputStream(path).use { inputStream -> + PDDocument.load(inputStream).use { pdf -> + (0 until pdf.numberOfPages).map { index -> + BookPage(index.toString(), mediaType) + } } } override fun getPageStream(path: Path, entryName: String): ByteArray = - PDDocument.load(Files.newInputStream(path)).use { pdf -> - val pageNumber = entryName.toInt() - val page = pdf.getPage(pageNumber) - val scale = resolution / minOf(page.cropBox.width, page.cropBox.height) - val image = PDFRenderer(pdf).renderImage(pageNumber, scale, ImageType.RGB) - ByteArrayOutputStream().use { out -> - ImageIO.write(image, imageIOFormat, out) - out.toByteArray() + Files.newInputStream(path).use { inputStream -> + PDDocument.load(inputStream).use { pdf -> + val pageNumber = entryName.toInt() + val page = pdf.getPage(pageNumber) + val scale = resolution / minOf(page.cropBox.width, page.cropBox.height) + val image = PDFRenderer(pdf).renderImage(pageNumber, scale, ImageType.RGB) + ByteArrayOutputStream().use { out -> + ImageIO.write(image, imageIOFormat, out) + out.toByteArray() + } } } } \ No newline at end of file