pdfium-render 0.9.0

A high-level idiomatic Rust wrapper around Pdfium, the C++ PDF library used by the Google Chromium project.
Documentation
# To run locally using act, use command:
# act -P ubuntu-latest=ghcr.io/catthehacker/ubuntu:rust-latest
# See: https://github.com/nektos/act/issues/297

name: Auto-build pdfium-render

on:
  push:
    branches: [ "master" ]
  pull_request:
    branches: [ "master" ]

env:
  CARGO_TERM_COLOR: always
  PDFIUM_RELEASE_TAG: 7543 # November 2025, https://github.com/bblanchon/pdfium-binaries/releases/tag/chromium%2F7543

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v4
    - name: Build
      run: rustup update && cargo build --verbose
    - name: Download Pdfium
      run: curl -L -o "pdfium.tgz" "https://github.com/bblanchon/pdfium-binaries/releases/download/chromium/${PDFIUM_RELEASE_TAG}/pdfium-linux-x64.tgz"
    - name: Unpack Pdfium
      run: mkdir pdfium && tar -xvzf pdfium.tgz -C pdfium
    - name: Install Pdfium
      run: cp pdfium/lib/libpdfium.so . && export LD_LIBRARY_PATH="./"
    - name: Run tests
      run: RUST_BACKTRACE=full cargo test --verbose --features="paragraph" -- --no-capture --test-threads 1
    - name: Verify static linking compatibility
      run: cargo check --features="static"
    - name: Verify WASM compatibility
      run: cargo install wasm-pack && wasm-pack build examples/ --target no-modules
    - name: Generate documentation
      run: cargo doc

    # Check to make sure we have complete Pdfium API coverage in bindings

    - name: Check bindings API coverage
      run: bash .github/scripts/api_coverage_test.sh

    # Compatibility checks for dynamic and thread safe bindings

    - name: Check forward compatibility with pdfium_future and dynamic bindings
      run: cargo check --no-default-features --features="image_latest, thread_safe, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_future"
    - name: Check backward compatibility with pdfium_5961 and dynamic bindings
      run: cargo check --no-default-features --features="image_latest, thread_safe, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_5961"
    - name: Check backward compatibility with pdfium_6015 and dynamic bindings
      run: cargo check --no-default-features --features="image_latest, thread_safe, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_6015"
    - name: Check backward compatibility with pdfium_6043 and dynamic bindings
      run: cargo check --no-default-features --features="image_latest, thread_safe, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_6043"
    - name: Check backward compatibility with pdfium_6084 and dynamic bindings
      run: cargo check --no-default-features --features="image_latest, thread_safe, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_6084"
    - name: Check backward compatibility with pdfium_6110 and dynamic bindings
      run: cargo check --no-default-features --features="image_latest, thread_safe, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_6110"
    - name: Check backward compatibility with pdfium_6124 and dynamic bindings
      run: cargo check --no-default-features --features="image_latest, thread_safe, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_6124"
    - name: Check backward compatibility with pdfium_6164 and dynamic bindings
      run: cargo check --no-default-features --features="image_latest, thread_safe, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_6164"
    - name: Check backward compatibility with pdfium_6259 and dynamic bindings
      run: cargo check --no-default-features --features="image_latest, thread_safe, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_6259"
    - name: Check backward compatibility with pdfium_6295 and dynamic bindings
      run: cargo check --no-default-features --features="image_latest, thread_safe, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_6295"
    - name: Check backward compatibility with pdfium_6337 and dynamic bindings
      run: cargo check --no-default-features --features="image_latest, thread_safe, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_6337"
    - name: Check backward compatibility with pdfium_6406 and dynamic bindings
      run: cargo check --no-default-features --features="image_latest, thread_safe, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_6406"
    - name: Check backward compatibility with pdfium_6490 and dynamic bindings
      run: cargo check --no-default-features --features="image_latest, thread_safe, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_6490"
    - name: Check backward compatibility with pdfium_6555 and dynamic bindings
      run: cargo check --no-default-features --features="image_latest, thread_safe, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_6555"
    - name: Check backward compatibility with pdfium_6569 and dynamic bindings
      run: cargo check --no-default-features --features="image_latest, thread_safe, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_6569"
    - name: Check backward compatibility with pdfium_6611 and dynamic bindings
      run: cargo check --no-default-features --features="image_latest, thread_safe, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_6611"
    - name: Check backward compatibility with pdfium_6666 and dynamic bindings
      run: cargo check --no-default-features --features="image_latest, thread_safe, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_6666"
    - name: Check backward compatibility with pdfium_6721 and dynamic bindings
      run: cargo check --no-default-features --features="image_latest, thread_safe, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_6721"
    - name: Check backward compatibility with pdfium_6996 and dynamic bindings
      run: cargo check --no-default-features --features="image_latest, thread_safe, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_6996"
    - name: Check backward compatibility with pdfium_7123 and dynamic bindings
      run: cargo check --no-default-features --features="image_latest, thread_safe, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_7123"
    - name: Check backward compatibility with pdfium_7215 and dynamic bindings
      run: cargo check --no-default-features --features="image_latest, thread_safe, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_7215"
    - name: Check backward compatibility with pdfium_7350 and dynamic bindings
      run: cargo check --no-default-features --features="image_latest, thread_safe, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_7350"
    - name: Check backward compatibility with pdfium_7543 and dynamic bindings
      run: cargo check --no-default-features --features="image_latest, thread_safe, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_7543"

    # Compatibility checks for static bindings

    - name: Check forward compatibility with pdfium_future and static bindings
      run: cargo check --no-default-features --features="image_latest, static, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_future"
    - name: Check backward compatibility with pdfium_5961 and static bindings
      run: cargo check --no-default-features --features="image_latest, static, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_5961"
    - name: Check backward compatibility with pdfium_6015 and static bindings
      run: cargo check --no-default-features --features="image_latest, static, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_6015"
    - name: Check backward compatibility with pdfium_6043 and static bindings
      run: cargo check --no-default-features --features="image_latest, static, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_6043"
    - name: Check backward compatibility with pdfium_6084 and static bindings
      run: cargo check --no-default-features --features="image_latest, static, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_6084"
    - name: Check backward compatibility with pdfium_6110 and static bindings
      run: cargo check --no-default-features --features="image_latest, static, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_6110"
    - name: Check backward compatibility with pdfium_6124 and static bindings
      run: cargo check --no-default-features --features="image_latest, static, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_6124"
    - name: Check backward compatibility with pdfium_6164 and static bindings
      run: cargo check --no-default-features --features="image_latest, static, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_6164"
    - name: Check backward compatibility with pdfium_6259 and static bindings
      run: cargo check --no-default-features --features="image_latest, static, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_6259"
    - name: Check backward compatibility with pdfium_6295 and static bindings
      run: cargo check --no-default-features --features="image_latest, static, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_6295"
    - name: Check backward compatibility with pdfium_6337 and static bindings
      run: cargo check --no-default-features --features="image_latest, static, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_6337"
    - name: Check backward compatibility with pdfium_6406 and static bindings
      run: cargo check --no-default-features --features="image_latest, static, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_6406"
    - name: Check backward compatibility with pdfium_6490 and static bindings
      run: cargo check --no-default-features --features="image_latest, static, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_6490"
    - name: Check backward compatibility with pdfium_6555 and static bindings
      run: cargo check --no-default-features --features="image_latest, static, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_6555"
    - name: Check backward compatibility with pdfium_6569 and static bindings
      run: cargo check --no-default-features --features="image_latest, static, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_6569"
    - name: Check backward compatibility with pdfium_6611 and static bindings
      run: cargo check --no-default-features --features="image_latest, static, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_6611"
    - name: Check backward compatibility with pdfium_6666 and static bindings
      run: cargo check --no-default-features --features="image_latest, static, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_6666"
    - name: Check backward compatibility with pdfium_6721 and static bindings
      run: cargo check --no-default-features --features="image_latest, static, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_6721"
    - name: Check backward compatibility with pdfium_6996 and static bindings
      run: cargo check --no-default-features --features="image_latest, static, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_6996"
    - name: Check backward compatibility with pdfium_7123 and static bindings
      run: cargo check --no-default-features --features="image_latest, static, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_7123"
    - name: Check backward compatibility with pdfium_7215 and static bindings
      run: cargo check --no-default-features --features="image_latest, static, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_7215"
    - name: Check backward compatibility with pdfium_7350 and static bindings
      run: cargo check --no-default-features --features="image_latest, static, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_7350"
    - name: Check backward compatibility with pdfium_7543 and static bindings
      run: cargo check --no-default-features --features="image_latest, static, pdfium_use_skia, pdfium_enable_xfa, pdfium_enable_v8, pdfium_7543"

    # Compatibility checks for WASM bindings

    - name: Check forward compatibility with pdfium_future and WASM bindings
      run: bash .github/scripts/wasm_api_compat_test.sh pdfium_future
    - name: Check backward compatibility with pdfium_5961 and WASM bindings
      run: bash .github/scripts/wasm_api_compat_test.sh pdfium_5961
    - name: Check backward compatibility with pdfium_6015 and WASM bindings
      run: bash .github/scripts/wasm_api_compat_test.sh pdfium_6015
    - name: Check backward compatibility with pdfium_6043 and WASM bindings
      run: bash .github/scripts/wasm_api_compat_test.sh pdfium_6043
    - name: Check backward compatibility with pdfium_6084 and WASM bindings
      run: bash .github/scripts/wasm_api_compat_test.sh pdfium_6084
    - name: Check backward compatibility with pdfium_6110 and WASM bindings
      run: bash .github/scripts/wasm_api_compat_test.sh pdfium_6110
    - name: Check backward compatibility with pdfium_6124 and WASM bindings
      run: bash .github/scripts/wasm_api_compat_test.sh pdfium_6124
    - name: Check backward compatibility with pdfium_6164 and WASM bindings
      run: bash .github/scripts/wasm_api_compat_test.sh pdfium_6164
    - name: Check backward compatibility with pdfium_6259 and WASM bindings
      run: bash .github/scripts/wasm_api_compat_test.sh pdfium_6259
    - name: Check backward compatibility with pdfium_6295 and WASM bindings
      run: bash .github/scripts/wasm_api_compat_test.sh pdfium_6295
    - name: Check backward compatibility with pdfium_6337 and WASM bindings
      run: bash .github/scripts/wasm_api_compat_test.sh pdfium_6337
    - name: Check backward compatibility with pdfium_6406 and WASM bindings
      run: bash .github/scripts/wasm_api_compat_test.sh pdfium_6406
    - name: Check backward compatibility with pdfium_6490 and WASM bindings
      run: bash .github/scripts/wasm_api_compat_test.sh pdfium_6490
    - name: Check backward compatibility with pdfium_6555 and WASM bindings
      run: bash .github/scripts/wasm_api_compat_test.sh pdfium_6555
    - name: Check backward compatibility with pdfium_6569 and WASM bindings
      run: bash .github/scripts/wasm_api_compat_test.sh pdfium_6569
    - name: Check backward compatibility with pdfium_6611 and WASM bindings
      run: bash .github/scripts/wasm_api_compat_test.sh pdfium_6611
    - name: Check backward compatibility with pdfium_6666 and WASM bindings
      run: bash .github/scripts/wasm_api_compat_test.sh pdfium_6666
    - name: Check backward compatibility with pdfium_6721 and WASM bindings
      run: bash .github/scripts/wasm_api_compat_test.sh pdfium_6721
    - name: Check backward compatibility with pdfium_6996 and WASM bindings
      run: bash .github/scripts/wasm_api_compat_test.sh pdfium_6996
    - name: Check backward compatibility with pdfium_7123 and WASM bindings
      run: bash .github/scripts/wasm_api_compat_test.sh pdfium_7123
    - name: Check backward compatibility with pdfium_7215 and WASM bindings
      run: bash .github/scripts/wasm_api_compat_test.sh pdfium_7215
    - name: Check backward compatibility with pdfium_7350 and WASM bindings
      run: bash .github/scripts/wasm_api_compat_test.sh pdfium_7350
    - name: Check backward compatibility with pdfium_7543 and WASM bindings
      run: bash .github/scripts/wasm_api_compat_test.sh pdfium_7543