lukyrys / pdf-response
pdf-response 的分支,Nette 框架的 PDF 响应扩展
v2.2.8
2021-02-08 19:52 UTC
Requires
- mpdf/mpdf: v8.0.10
Requires (Dev)
- latte/latte: ~2.2
- nette/application: ~2.2
- nette/tester: ~1.0
- symfony/css-selector: ~2.5
- symfony/dom-crawler: ~2.5
Suggests
- nette/nette: PHP framework to which this extension belongs to.
- symfony/dom-crawler: Allows filtering html tags.
Conflicts
- mpdf/mpdf: >=5.7.3, <=5.7.99
Replaces
README
- 将模板发送为 PDF 输出
- 与 Nette 2.0.*、Nette 2.1.* 和 Nette 2.2.* 都兼容
- 不支持 JavaScript
- API 界面友好
安装
通过 Composer 安装。
{
"require":{
"joseki/pdf-response": ">= 2.1"
}
}
如何从模板准备 PDF
// in a Presenter public function actionPdf() { $template = $this->createTemplate(); $template->setFile("/path/to/template.latte"); $template->someValue = 123; // Tip: In template to make a new page use <pagebreak> $pdf = new Joseki\Application\Responses\PdfResponse($template); // optional $pdf->documentTitle = date("Y-m-d") . " My super title"; // creates filename 2012-06-30-my-super-title.pdf $pdf->pageFormat = "A4-L"; // wide format $pdf->getMPDF()->setFooter("|© www.mysite.com|"); // footer }
将文件保存到服务器
public function actionPdf() { $template = $this->createTemplate(); $template->setFile("/path/to/template.latte"); $pdf = new Joseki\Application\Responses\PdfResponse($template); $pdf->save("/path/to/directory"); // as a filename $this->documentTitle will be used $pdf->save("/path/to/directory", "filename"); // OR use a custom name }
将文件附加到电子邮件
public function actionPdf() { $template = $this->createTemplate(); $template->setFile("/path/to/template.latte"); $pdf = new Joseki\Application\Responses\PdfResponse($template); $savedFile = $pdf->save("/path/to/directory"); $mail = new Nette\Mail\Message; $mail->addTo("john@doe.com"); $mail->addAttachment($savedFile); $mailer = new SendmailMailer(); $mailer->send($mail); }
强制文件下载
public function actionPdf() { $template = $this->createTemplate(); $template->setFile("/path/to/template.latte"); $pdf = new Joseki\Application\Responses\PdfResponse($template); $pdf->setSaveMode(PdfResponse::DOWNLOAD); //default behavior $this->sendResponse($pdf); }
强制文件在浏览器中显示
public function actionPdf() { $template = $this->createTemplate(); $template->setFile("/path/to/template.latte"); $pdf = new Joseki\Application\Responses\PdfResponse($template); $pdf->setSaveMode(PdfResponse::INLINE); $this->sendResponse($pdf); }
轻松设置 PDF 背景
public function actionPdf() { $pdf = new Joseki\Application\Responses\PdfResponse(''); $pdf->setBackgroundTemplate("/path/to/an/existing/file.pdf"); // to write into an existing document use the following statements $mpdf = $pdf->getMPDF(); $mpdf->WriteFixedPosHTML('hello world', 1, 10, 10, 10); // to write to another page $mpdf->AddPage(); // to move to exact page, use $mpdf->page = 3; // = move to 3rd page $this->sendResponse($pdf); }
仅使用 Latte 创建 PDF
public function actionPdf() { $latte = new Latte\Engine; $latte->setTempDirectory('/path/to/cache'); $latte->addFilter('money', function($val) { return ...; }); // formerly registerHelper() $latte->onCompile[] = function($latte) { $latte->addMacro(...); // when you want add some own macros, see http://goo.gl/d5A1u2 }; $template = $latte->renderToString("/path/to/template.latte"); $pdf = new Joseki\Application\Responses\PdfResponse($template); $this->sendResponse($pdf); }