Snapshot của KnpLabs/snappy: 4.5k★ · PHP · Image Tools. PHP library allowing thumbnail, snapshot or PDF generation from a url or a html page. Wrapper for wkhtmltopdf/wkhtmltoimage
Tóm tắt dựng từ metadata GitHub của chính dự án — chưa có bài review TopGit. Trang sẽ tự động cập nhật khi bài review đầy đủ được xuất bản.
VÌ SAO CHƯA CÓ REVIEW
TopGit viết bài đầy đủ cho repo có nhiều sao nhất và được yêu cầu nhiều nhất. Trang này là snapshot trong thời gian chờ — xem README gốc ở tab READ ME.
Snappy is a PHP library allowing thumbnail, snapshot or PDF generation from a url or a html page.
It uses the excellent webkit-based wkhtmltopdf and wkhtmltoimage
available on OSX, linux, windows.
You will have to download wkhtmltopdf 0.12.x in order to use Snappy.
Please, check FAQ before opening a new issue. Snappy is a tiny wrapper around wkhtmltox, so lots of issues are already answered, resolved or wkhtmltox ones.
Following integrations are available:
knplabs/knp-snappy-bundle, for Symfony
barryvdh/laravel-snappy, for Laravel
mvlabs/mvlabs-snappy, for Zend Framework
Installation using Composer
composer require knplabs/knp-snappy
Usage
⚠️ Security Warning
The --enable-local-file-access option in wkhtmltopdf can be risky if used with untrusted HTML or JavaScript.
This may expose local files or lead to remote code execution.
Run wkhtmltopdf in a sandbox like AppArmor or SELinux.
For untrusted content, consider alternatives like WeasyPrint, Prince, or Puppeteer.
This risk was responsibly reported by Nikita Sveshnikov (Positive Technologies).
🔗 Official recommendations
Initialization
<?php
require __DIR__ . '/vendor/autoload.php';
use Knp\Snappy\Pdf;
$snappy = new Pdf('/usr/local/bin/wkhtmltopdf');
// or you can do it in two steps
$snappy = new Pdf();
$snappy->setBinary('/usr/local/bin/wkhtmltopdf');
Display the pdf in the browser
$snappy = new Pdf('/usr/local/bin/wkhtmltopdf');
header('Content-Type: application/pdf');
echo $snappy->getOutput('http://www.github.com');
$snappy = new Pdf('/usr/local/bin/wkhtmltopdf');
$snappy->generateFromHtml('<h1>Bill</h1><p>You owe me money, dude.</p>', '/tmp/bill-123.pdf');
Pass options to snappy
// Type wkhtmltopdf -H to see the list of options
$snappy = new Pdf('/usr/local/bin/wkhtmltopdf');
$snappy->setOption('disable-javascript', true);
$snappy->setOption('no-background', true);
$snappy->setOption('allow', array('/path1', '/path2'));
$snappy->setOption('cookie', array('key' => 'value', 'key2' => 'value2'));
$snappy->setOption('post', array('key' => 'value'));
$snappy->setOption('cover', 'pathToCover.html');
// .. or pass a cover as html
$snappy->setOption('cover', '<h1>Bill cover</h1>');
$snappy->setOption('toc', true);
$snappy->setOption('cache-dir', '/path/to/cache/dir');
Reset options
Options can be reset to their initial values with resetOptions() method.
$snappy = new Pdf('/usr/local/bin/wkhtmltopdf');
// Set some options
$snappy->setOption('copies' => 4);
// ..
// Reset options
$snappy->resetOptions();
wkhtmltopdf binary as composer dependencies
If you want to download wkhtmltopdf and wkhtmltoimage with composer you add to composer.json:
<?php
use Knp\Snappy\Pdf;
$myProjectDirectory = '/path/to/my/project';
$snappy = new Pdf($myProjectDirectory . '/vendor/h4cc/wkhtmltopdf-i386/bin/wkhtmltopdf-i386');
// or
$snappy = new Pdf($myProjectDirectory . '/vendor/h4cc/wkhtmltopdf-amd64/bin/wkhtmltopdf-amd64');
N.B. These static binaries are extracted from Debian7 packages, so it might not be compatible with non-debian based linux distros
Some use cases
If you want to generate table of contents and you want to use custom XSL stylesheet, do the following:
<?php
$snappy = new Pdf('/path/to/binary');
$snappy->setOption('toc', true);
$snappy->setOption('xsl-style-sheet', 'http://path/to/stylesheet.xsl') //or local file;
$snappy->generateFromHtml('<p>Some content</p>', 'test.pdf');
Bugs & Support
If you found a bug please fill a detailed issue with all the following points.
If you need some help, please at least provide a complete reproducer so we could help you based on facts rather than assumptions.
OS and its version
Wkhtmltopdf, its version and how you installed it
A complete reproducer with relevant php and html/css/js code
If your reproducer is big, please try to shrink it. It will help everyone to narrow the bug.
Maintainers
KNPLabs is looking for maintainers (see why).
If you are interested, feel free to open a PR to ask to be added as a maintainer.
We’ll be glad to hear from you :)
Credits
Snappy has been originally developed by the KnpLabs team.
KnpLabs/snappy thuộc nhóm Image Tools trên TopGit, cùng 6 topic GitHub. Trang Trending và Topics liệt kê các repo cùng số sao và cùng ngôn ngữ để so sánh.
Đọc thêm về KnpLabs/snappy ở đâu?
Trang TopGit này là một snapshot — tab "Readme" hiển thị nguyên văn README của repo (đã bỏ link, giữ ảnh). Repo GitHub ở github.com/KnpLabs/snappy là nguồn chính thức.
KnpLabs/snappy có bao nhiêu sao?
KnpLabs/snappy có 4.5k sao GitHub — tải lại trang để xem số mới nhất, hoặc xem trực tiếp github.com/KnpLabs/snappy. TopGit phản chiếu số sao của GitHub nhưng không cam kết đến từng phút.
KnpLabs/snappy có những chủ đề gì?
GitHub topics của KnpLabs/snappy: "hacktoberfest", "html-to-image", "html-to-pdf", "image-generation", "pdf-generation", "php". TopGit xếp repo vào nhóm Image Tools.
KnpLabs/snappy có phải mã nguồn mở không?
Có — KnpLabs/snappy phát hành theo license MIT, nghĩa là mã nguồn mở để đọc, fork và (tùy license) tái sử dụng. Mã: github.com/KnpLabs/snappy.
KnpLabs/snappy có trang demo không?
Dự án có trang chủ ở https://knplabs.com. Tab "Readme" ở trang này thường có ảnh chụp và hướng dẫn bắt đầu nhanh.
KnpLabs/snappy còn đang phát triển không?
Commit gần nhất trên KnpLabs/snappy là 3 tháng trước (theo timestamp GitHub). Repo có 438 fork — một chỉ báo về mức độ quan tâm của cộng đồng.
Đọc đầy đủ README ở tab phía trên.
snappy có đáng để bạn bỏ thời gian?
ChatGPT, Claude và Perplexity đều đọc được trang này. Hỏi thử xem họ nghĩ gì về snappy.