From 8da2489671b4a1f00675b126abe71f6f2f57ea49 Mon Sep 17 00:00:00 2001 From: Gauthier Roebroeck Date: Mon, 31 Jan 2022 11:16:55 +0800 Subject: [PATCH] perf: use temp files for PDF streams reduces the memory usage for large PDF files --- .../gotson/komga/infrastructure/mediacontainer/PdfExtractor.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/komga/src/main/kotlin/org/gotson/komga/infrastructure/mediacontainer/PdfExtractor.kt b/komga/src/main/kotlin/org/gotson/komga/infrastructure/mediacontainer/PdfExtractor.kt index 79e60170d..3097893d8 100644 --- a/komga/src/main/kotlin/org/gotson/komga/infrastructure/mediacontainer/PdfExtractor.kt +++ b/komga/src/main/kotlin/org/gotson/komga/infrastructure/mediacontainer/PdfExtractor.kt @@ -2,6 +2,7 @@ package org.gotson.komga.infrastructure.mediacontainer import com.github.benmanes.caffeine.cache.Caffeine import mu.KotlinLogging +import org.apache.pdfbox.io.MemoryUsageSetting import org.apache.pdfbox.pdmodel.PDDocument import org.apache.pdfbox.pdmodel.PDPage import org.apache.pdfbox.rendering.ImageType @@ -43,7 +44,7 @@ class PdfExtractor : MediaContainerExtractor { } override fun getEntryStream(path: Path, entryName: String): ByteArray { - val pdf = cache.get(path) { PDDocument.load(path.toFile()) }!! + val pdf = cache.get(path) { PDDocument.load(path.toFile(), MemoryUsageSetting.setupTempFileOnly()) }!! val pageNumber = entryName.toInt() val page = pdf.getPage(pageNumber) val image = PDFRenderer(pdf).renderImage(pageNumber, page.getScale(), ImageType.RGB)