pdfrx_engine 0.3.6 copy "pdfrx_engine: ^0.3.6" to clipboard
pdfrx_engine: ^0.3.6 copied to clipboard

pdfrx_engine is a PDF rendering and manipulation API built on top of PDFium, designed to be used with the pdfrx plugin. Supports viewing, editing, and combining PDF documents.

pdfrx_engine #

Build Test

pdfrx_engine is a platform-agnostic PDF rendering and manipulation engine built on top of PDFium. It provides low-level PDF document APIs for viewing, editing, combining PDF documents, and importing images without any Flutter dependencies, making it suitable for use in pure Dart applications, CLI tools, or server-side PDF processing.

This package depends on pdfium_dart for PDFium FFI bindings and is a part of pdfrx Flutter plugin, which adds UI widgets and Flutter-specific features on top of this engine.

Multi-platform support #

  • Android
  • iOS
  • Windows
  • macOS
  • Linux (even on Raspberry Pi)
  • Web (WASM) supported only on Flutter by pdfrx

Example Codes #

Page Image Export #

The following fragment illustrates how to use the PDF engine to load and render a PDF file:

import 'dart:io';
import 'package:image/image.dart' as img;
import 'package:pdfrx_engine/pdfrx_engine.dart';

void main() async {
  await pdfrxInitialize();

  final document = await PdfDocument.openFile('test.pdf');
  final page = document.pages[0]; // first page
  final pageImage = await page.render(
    width: page.width * 200 / 72,
    height: page.height * 200 / 72,
  );
  final image = pageImage!.createImageNF();
  await File('output.png').writeAsBytes(img.encodePng(image));
  pageImage.dispose();
  document.close();
}

You should call pdfrxInitialize() before using any PDF engine APIs to ensure the native PDFium library is properly loaded. For more information, see pdfrx Initialization

Page Manipulation Example #

The following example demonstrates how to combine pages from multiple PDF documents:

import 'dart:io';
import 'package:pdfrx_engine/pdfrx_engine.dart';

void main() async {
  await pdfrxInitialize();

  // Open source PDF documents
  final doc1 = await PdfDocument.openFile('document1.pdf');
  final doc2 = await PdfDocument.openFile('document2.pdf');

  // Create a new PDF document
  final outputDoc = await PdfDocument.createNew(sourceName: 'combined.pdf');

  // Combine pages: first 3 pages from doc1, all pages from doc2, last page from doc1
  outputDoc.pages = [
    ...doc1.pages.sublist(0, 3),
    ...doc2.pages,
    doc1.pages.last,
  ];

  // Save the combined PDF
  final pdfData = await outputDoc.encodePdf();
  await File('combined.pdf').writeAsBytes(pdfData);

  // Clean up
  doc1.dispose();
  doc2.dispose();
  outputDoc.dispose();
}

Image-to-PDF Conversion Example #

The following example shows how to convert JPEG images to PDF:

import 'dart:io';
import 'package:pdfrx_engine/pdfrx_engine.dart';

void main() async {
  await pdfrxInitialize();

  // Load JPEG image data
  final jpegData = await File('photo.jpg').readAsBytes();

  // Create PDF from JPEG (A4 size: 595 x 842 points)
  final doc = await PdfDocument.createFromJpegData(
    jpegData,
    width: 595,
    height: 842,
    sourceName: 'photo.pdf',
  );

  // Save to file
  final pdfData = await doc.encodePdf();
  await File('output.pdf').writeAsBytes(pdfData);

  doc.dispose();
}

For more complex examples including selective page combining with range specifications, see pdfcombine.dart.

For detailed guides and tutorials, see the documentation:

PDF API #

When to Use pdfrx_engine vs. pdfrx #

Use pdfrx_engine when:

  • Building CLI tools or server applications
  • You need PDF rendering without Flutter UI
  • Creating custom PDF processing pipelines
  • Working in pure Dart environments

Use pdfrx when:

  • Building Flutter applications
  • You need ready-to-use PDF viewer widgets
  • You want features like text selection, search, and zoom controls
  • You prefer high-level APIs with Flutter integration
11
likes
160
points
82.5k
downloads

Publisher

verified publisherespresso3389.jp

Weekly Downloads

pdfrx_engine is a PDF rendering and manipulation API built on top of PDFium, designed to be used with the pdfrx plugin. Supports viewing, editing, and combining PDF documents.

Homepage
Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

archive, collection, crypto, ffi, http, image, path, pdfium_dart, rxdart, synchronized, vector_math

More

Packages that depend on pdfrx_engine