定制 imal-h/pdf-box 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

imal-h/pdf-box

最新稳定版本:v3.1.5

Composer 安装命令:

composer require imal-h/pdf-box

包简介

The most advanced, driver-based PDF manipulation library for PHP v3.0. Supports Ghostscript, Chrome Headless (HTML to PDF), OpenSSL (Signing), and PDFtk (Forms).

README 文档

README

Banner

Try out before you actually use it

docker run --pull always -p 9090:80 treineticprojects/demo_opensource:latest

PDFLib v3.1

Issues Software License Forks

The most advanced, driver-based PDF manipulation library for PHP.

PDFLib v3.1 is the mature, stable release of the new driver-based architecture. It allows you to switch between powerful backends like Ghostscript, PDFtk, OpenSSL, and Tesseract for different tasks, all under a single, beautiful fluent API.

👉 Try the Interactive Demo | 📚 Read the Documentation

🛡️ Stability Guarantee (v4.0 Ready)

We take backward compatibility seriously.

The v3.1 architecture introduces a strict separation between the API (Facade) and the Execution Logic (Drivers).

  • Zero Breaking Changes Promise: This structure allows us to upgrade the underlying engine (e.g., adding Cloud/Async support in v4.0) without changing a single line of your application code.
  • Pipeline Pattern: Operations like rotate() or ocr() are queued, decoupling your intent from immediate execution. Use PDFLib with confidence knowing the API is frozen and stable.

🚀 What's New in v3.1?

  • OCR Support: Extract text from images and PDFs using Tesseract.
  • Redaction: Securely blackout sensitive text.
  • Metadata: Read/Write PDF metadata.
  • Laravel Wrapper: First-party ServiceProvider and Facade.
  • Stateful Chaining: Queue multiple operations (->rotate()->watermark()->save()).

📦 Requirements

  • PHP >= 8.1
  • Ghostscript >= 9.16 (for GhostscriptDriver)
  • Google Chrome or Chromium (for HTML to PDF)
  • pdftk (PDF Toolkit) (for Form Filling)

👉 See Installation Guide for detailed setup instructions on macOS, Ubuntu, and Windows.

🔧 Installation

composer require imal-h/pdf-box

✨ Features

Feature Description Driver
HTML to PDF Generate PDF from HTML/CSS Chrome
Digital Sign Sign PDFs with X.509 Certs OpenSSL
OCR Extract text from PDF/Images Tesseract
Redact Blackout sensitive text Ghostscript
Fill Forms Fill AcroForms (FDF) PDFtk
Inspect Forms Get Field Names PDFtk
Convert PDF to Images (PNG/JPG) Ghostscript
Merge Combine multiple PDFs Ghostscript
Split Extract pages or ranges Ghostscript
Compress Optimize PDF file size Ghostscript
Encrypt Password protection and permissions Ghostscript
Watermark Overlay text on pages Ghostscript
Rotation Rotate pages 90/180/270° Ghostscript
Metadata Edit Title, Author, Keywords Ghostscript
Flatten Burn forms into content Ghostscript

📖 Usage

HTML to PDF (New in v3.0)

Generate PDFs from HTML content or URLs using Chrome Headless.

use ImalH\PDFLib\PDF;

// From HTML String
PDF::init()
    ->driver(PDF::DRIVER_CHROME)
    ->convertFromHtml('<h1>Hello World</h1>', 'output.pdf');

// From URL (Coming Soon)
// PDF::init()->driver(PDF::DRIVER_CHROME)->fromUrl('https://google.com')->save('output.pdf');

Digital Signatures (New in v3.0)

Digitally sign PDFs using OpenSSL (requires tecnickcom/tcpdf).

use ImalH\PDFLib\PDF;

PDF::init()
    ->driver(PDF::DRIVER_OPENSSL)
    ->from('contract.pdf')
    ->sign('certificate.crt', 'private_key.pem', 'signed_contract.pdf', [
        'info' => [
            'Name' => 'John Doe',
            'Location' => 'Colombo, LK',
            'Reason' => 'Digital Contract Signature'
        ]
    ]);

Note: If you use a self-signed certificate (like in testing), PDF viewers will show "Signature Validity Unknown". For a green "Trusted" checkmark, use a certificate issued by a recognized Certificate Authority (CA) or explicitly trust your self-signed certificate in the viewer's settings.

Laravel Integration

Publish the config file:

php artisan vendor:publish --tag=pdflib-config

Use the Facade in your controllers:

use ImalH\PDFLib\Laravel\Facades\PDF;

// The driver is automatically configured from config/pdflib.php
PDF::from('upload.pdf')->ocr('output.txt');

OCR (New in v3.1)

Extract text from scanned PDFs or images.

PDF::init()
    ->driver(PDF::DRIVER_TESSERACT)
    ->from('scanned_doc.pdf') // Automatically converts PDF to Image internally
    ->ocr('extracted_text');

Redaction (New in v3.1)

Permanently remove sensitive text.

PDF::init()
    ->driver(PDF::DRIVER_GHOSTSCRIPT)
    ->from('invoice.pdf')
    ->redact('Confidential', 'clean_invoice.pdf');

Interactive Forms

Fill PDF forms programmatically using pdftk.

use ImalH\PDFLib\PDF;

// 1. Inspect Fields (Optional)
$fields = PDF::init()->driver(PDF::DRIVER_PDFTK)->getFormFields('form_template.pdf');
// returns ['full_name', 'date', ...]

// 2. Fill Form
PDF::init()
    ->driver(PDF::DRIVER_PDFTK)
    ->from('form_template.pdf')
    ->fillForm([
        'full_name' => 'Imal Perera',
        'date' => '2025-01-01'
    ], 'filled_form.pdf');

The Modern Way (Fluent API)

use ImalH\PDFLib\PDF;

// Convert PDF Page 1 to JPEG
PDF::init()
    ->driver(PDF::DRIVER_GHOSTSCRIPT)
    ->from('document.pdf')
    ->to('output_folder')
    ->convert();

The Legacy Way (v2.x Facade)

Existing code continues to work without changes, but is marked as deprecated.

use ImalH\PDFLib\PDFLib; // Legacy Class

$pdfLib = new PDFLib();
$pdfLib->setPdfPath("document.pdf")
       ->setOutputPath("output_folder")
       ->convert();

Example: Advanced Chain

PDF::init()
    ->from('source.pdf')
    ->from('source.pdf')
    ->encrypt('userPass', 'ownerPass', 'processed.pdf');

(Note: Current driver operations like encrypt, rotate, and watermark are immediate and require a destination path. Fully stateful chaining for these methods is planned for v3.1)

🔮 Roadmap

Want to see what's coming next (v3.1+)? Check out our Roadmap.

🤝 Contributing

We welcome contributions! Please see CONTRIBUTING for details on our new coding standards (Pint, PHPStan) and architecture.

📄 License

The MIT License (MIT). Please see License File.

Initiative of Treinetic (Pvt) Ltd.

统计信息

  • 总下载量: 391.17k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 59
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 58
  • Watchers: 7
  • Forks: 38
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2016-09-05