From f0d8a9d7740db6ac321091157e922bbc1e60eb6b Mon Sep 17 00:00:00 2001 From: Waldemar Kornewald Date: Fri, 29 May 2026 13:19:21 +0200 Subject: [PATCH 1/2] Added Flatpak support and allow customizing JNI lib loading --- .../kotlin/com/dshatz/pdfmp/InitLib.jvm.kt | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/pdfmp/src/jvmMain/kotlin/com/dshatz/pdfmp/InitLib.jvm.kt b/pdfmp/src/jvmMain/kotlin/com/dshatz/pdfmp/InitLib.jvm.kt index cda224e..4a893b0 100644 --- a/pdfmp/src/jvmMain/kotlin/com/dshatz/pdfmp/InitLib.jvm.kt +++ b/pdfmp/src/jvmMain/kotlin/com/dshatz/pdfmp/InitLib.jvm.kt @@ -9,10 +9,13 @@ import kotlin.use actual class InitLib { private val osName = System.getProperty("os.name").lowercase(Locale.ENGLISH) private val osArch = System.getProperty("os.arch").lowercase(Locale.ENGLISH) + + var overrideLoadLibrary: (name: String) -> Unit = ::loadLibraryFromJar + actual fun init() { try { - loadLibraryFromJar("pdfium") - loadLibraryFromJar("pdfmp") + overrideLoadLibrary("pdfium") + overrideLoadLibrary("pdfmp") PDFBridge.initNative() } catch (e: UnsatisfiedLinkError) { e("Failed to load native library", e) @@ -20,6 +23,16 @@ actual class InitLib { } private fun loadLibraryFromJar(baseName: String) { + // Detect Flatpak sandbox + if ((osName.contains("nux") || osName.contains("nix")) && File("/.flatpak-info").exists()) { + try { + System.loadLibrary(baseName) + return + } catch (e: Throwable) { + // Ignore + } + } + val (platformDir, extension, prefix) = getPlatformDetails() val fileName = "${prefix}${baseName}.${extension}" From 0f57ac321460e247a39cc18a304f094c013d83b2 Mon Sep 17 00:00:00 2001 From: Waldemar Kornewald Date: Thu, 4 Jun 2026 07:25:15 +0200 Subject: [PATCH 2/2] Removed Nucleus workaround, fixed override --- .../kotlin/com/dshatz/pdfmp/InitLib.jvm.kt | 22 ++++++------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/pdfmp/src/jvmMain/kotlin/com/dshatz/pdfmp/InitLib.jvm.kt b/pdfmp/src/jvmMain/kotlin/com/dshatz/pdfmp/InitLib.jvm.kt index 4a893b0..c1a6895 100644 --- a/pdfmp/src/jvmMain/kotlin/com/dshatz/pdfmp/InitLib.jvm.kt +++ b/pdfmp/src/jvmMain/kotlin/com/dshatz/pdfmp/InitLib.jvm.kt @@ -10,12 +10,10 @@ actual class InitLib { private val osName = System.getProperty("os.name").lowercase(Locale.ENGLISH) private val osArch = System.getProperty("os.arch").lowercase(Locale.ENGLISH) - var overrideLoadLibrary: (name: String) -> Unit = ::loadLibraryFromJar - actual fun init() { try { - overrideLoadLibrary("pdfium") - overrideLoadLibrary("pdfmp") + overrideLoadLibrary?.invoke("pdfium") ?: loadLibraryFromJar("pdfium") + overrideLoadLibrary?.invoke("pdfmp") ?: loadLibraryFromJar("pdfmp") PDFBridge.initNative() } catch (e: UnsatisfiedLinkError) { e("Failed to load native library", e) @@ -23,16 +21,6 @@ actual class InitLib { } private fun loadLibraryFromJar(baseName: String) { - // Detect Flatpak sandbox - if ((osName.contains("nux") || osName.contains("nix")) && File("/.flatpak-info").exists()) { - try { - System.loadLibrary(baseName) - return - } catch (e: Throwable) { - // Ignore - } - } - val (platformDir, extension, prefix) = getPlatformDetails() val fileName = "${prefix}${baseName}.${extension}" @@ -82,4 +70,8 @@ actual class InitLib { throw UnsupportedOperationException("Unsupported OS/Arch: $osName / $osArch") } -} \ No newline at end of file + + companion object { + var overrideLoadLibrary: ((name: String) -> Unit)? = null + } +}