Visitar URL original
NativeScript PDF: update current impl · Issue #9 · hackergarten/contributions · GitHub
Skip to content

NativeScript PDF: update current impl #9

Description

@madmas

Currently, the impl of the PDF viewer is somewhat update, let´s put it to state of the art!

https://github.com/NativeScript/plugins/tree/main/packages/pdf

Activity

  1. madmas commented on Sep 4, 2025

    @madmas
    MemberAuthor

    This becomes more urgent as google requests updates in the context of 16kb alignment.

    Pdfium we should upgrade to:

    https://github.com/marain87/PdfiumAndroid

  2. madmas commented on Sep 5, 2025

    @madmas
    MemberAuthor

    ...which still has a prolbem in the included native libs. (Validation with our script and with the llvm commands from the google page fail).

    The thread in barteksc/PdfiumAndroid#95 has some valuable details.

    https://github.com/renzified/PdfiumAndroid/releases/tag/V2.0.1
    and
    https://github.com/ynkfish/PdfiumAndroid/releases/tag/v2.0.1

    both claim they have fixed this, but checks show they have not:

    ynkfish:

    NONCOMPLIANT   ../../packages/pdf/platforms/android/PdfiumAndroid-2.0.1-ynkfish-release.aar 
    Failing libs: jni/armeabi-v7a/libc++_shared.so, jni/armeabi-v7a/libjniPdfium.so, jni/armeabi-v7a/libmodft2.so, jni/armeabi-v7a/libmodpdfium.so, jni/armeabi-v7a/libmodpng.so, jni/mips/libc++_shared.so, jni/mips/libmodft2.so, jni/mips/libmodpdfium.so, jni/mips/libmodpng.so, jni/x86/libc++_shared.so, jni/x86/libjniPdfium.so, jni/x86/libmodft2.so, jni/x86/libmodpdfium.so, jni/x86/libmodpng.so
    
    ➜  analysis $NDK/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf -l jni/armeabi-v7a/libmodpdfium.so | grep -E 'Type|LOAD|ALIGN|Align|p_align' 
      Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
      LOAD           0x000000 0x00000000 0x00000000 0x304e60 0x304e60 R E 0x1000
      LOAD           0x304e60 0x00305e60 0x00305e60 0x0a7b4 0x0b1a0 RW  0x1000
      LOAD           0x30f618 0x00311618 0x00311618 0x02618 0x03cb4 RW  0x1000
    ➜  analysis $NDK/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump -p  jni/armeabi-v7a/libmodpdfium.so | grep -E 'Type|LOAD|ALIGN|Align'        
        LOAD off    0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**12
        LOAD off    0x00304e60 vaddr 0x00305e60 paddr 0x00305e60 align 2**12
        LOAD off    0x0030f618 vaddr 0x00311618 paddr 0x00311618 align 2**12
    

    where we would need to see 0x4000 and 2**14 at least in the last columns according to https://developer.android.com/guide/practices/page-sizes

    renzfied:

    NONCOMPLIANT   ../../packages/pdf/platforms/android/PdfiumAndroid-2.0.1-renzified-release.aar 
    Failing libs: jni/armeabi-v7a/libc++_shared.so, jni/armeabi-v7a/libjniPdfium.so, jni/armeabi-v7a/libmodft2.so, jni/armeabi-v7a/libmodpdfium.so, jni/armeabi-v7a/libmodpng.so, jni/mips/libc++_shared.so, jni/mips/libmodft2.so, jni/mips/libmodpdfium.so, jni/mips/libmodpng.so, jni/x86/libc++_shared.so, jni/x86/libjniPdfium.so, jni/x86/libmodft2.so, jni/x86/libmodpdfium.so, jni/x86/libmodpng.so
    
    ➜  android git:(pdf_upate-android-libraries) ✗ $NDK/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf -l jni/armeabi-v7a/libmodpdfium.so | grep -E 'Type|LOAD|ALIGN|Align|p_align' 
      Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
      LOAD           0x000000 0x00000000 0x00000000 0x304e60 0x304e60 R E 0x1000
      LOAD           0x304e60 0x00305e60 0x00305e60 0x0a7b4 0x0b1a0 RW  0x1000
      LOAD           0x30f618 0x00311618 0x00311618 0x02618 0x03cb4 RW  0x1000
    ➜  android git:(pdf_upate-android-libraries) ✗ $NDK/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump -p  jni/armeabi-v7a/libmodpdfium.so | grep -E 'Type|LOAD|ALIGN|Align'         
        LOAD off    0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**12
        LOAD off    0x00304e60 vaddr 0x00305e60 paddr 0x00305e60 align 2**12
        LOAD off    0x0030f618 vaddr 0x00311618 paddr 0x00311618 align 2**12
    

    Unfortunately, both repos dont have "Issues" enabled so its not possible to contact them on that path.

  3. madmas commented on Sep 5, 2025

    @madmas
    MemberAuthor

    Now I got a hint upon https://github.com/AhmerAfzal1/AhmerPdfium who claims to be a maintained fork of barteksc/PdfiumAndroid and barteksc/AndroidPdfViewer.

    Using the dependencies via gradle did not work out.

    So I check out the repo and build the aars myself for now.

    Need to adjust package names in our code.
    As AhmerPdfium is kotlin based, I seem to have a lot of trouble to use it in NativeScript
    It aso seems like directly loading from URLs is not supported anymore.

    Also, the check fails also for these AARs:

    __unknown__ - - NONCOMPLIANT ../../packages/pdf/platforms/android/libPdfium-release.aar Failing libs: jni/armeabi-v7a/libc++_shared.so, jni/armeabi-v7a/libpdfium.so, jni/armeabi-v7a/libpdfium_jni.so, jni/x86/libc++_shared.so, jni/x86/libpdfium.so, jni/x86/libpdfium_jni.so

    Also, llvm check fails:

    ➜  aar git:(master) ✗  $NDK/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf -l jni/armeabi-v7a/libpdfium.so | grep -E 'Type|LOAD|ALIGN|Align|p_align'
      Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
      LOAD           0x000000 0x00000000 0x00000000 0x369530 0x369530 R E 0x1000
      LOAD           0x369530 0x0036a530 0x0036a530 0x0a4c0 0x0aad0 RW  0x1000
      LOAD           0x3739f0 0x003759f0 0x003759f0 0x02638 0x03d4c RW  0x1000
    ➜  aar git:(master) ✗  $NDK/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf -l jni/armeabi-v7a/libpdfium_jni.so | grep -E 'Type|LOAD|ALIGN|Align|p_align'
      Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
      LOAD           0x000000 0x00000000 0x00000000 0x07140 0x07140 R E 0x1000
      LOAD           0x007140 0x00008140 0x00008140 0x00338 0x00ec0 RW  0x1000
      LOAD           0x007478 0x00009478 0x00009478 0x00000 0x0000c RW  0x1000
    ➜  aar git:(master) ✗ $NDK/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump -p  jni/armeabi-v7a/libpdfium.so | grep -E 'Type|LOAD|ALIGN|Align' 
        LOAD off    0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**12
        LOAD off    0x00369530 vaddr 0x0036a530 paddr 0x0036a530 align 2**12
        LOAD off    0x003739f0 vaddr 0x003759f0 paddr 0x003759f0 align 2**12
    ➜  aar git:(master) ✗ $NDK/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump -p  jni/armeabi-v7a/libpdfium_jni.so | grep -E 'Type|LOAD|ALIGN|Align' 
        LOAD off    0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**12
        LOAD off    0x00007140 vaddr 0x00008140 paddr 0x00008140 align 2**12
        LOAD off    0x00007478 vaddr 0x00009478 paddr 0x00009478 align 2**12
    
  4. madmas commented on Sep 10, 2025

    @madmas
    MemberAuthor

    In the end, the attempt with the version from marian87 worked 👍 NativeScript/plugins#645

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions