mattclegg / silverstripe-dompdf
dev-master
2020-05-21 11:48 UTC
Requires
- dompdf/dompdf: ^0.8
- silverstripe/framework: 4.x-dev
This package is auto-updated.
Last update: 2024-09-21 21:34:51 UTC
README
http://code.google.com/p/dompdf/
输入
- HTML字符串(可以是渲染模板)
- HTML文件
输出
- PDF文件位置
- SS文件
- PDF二进制流到浏览器
快速开始
找到页面ID号码(例如1)并前往;/pdf/1
通过将DefaultPDF复制到您的主题目录来自定义您的模板。
通过前往;/pdf/1?show查看原始输出
示例用法
$pdf = new SS_DOMPDF();
$pdf->setHTML($mydataobject->renderWith('MyTemplate'));
$pdf->render();
$pdf->toFile('mypdf.pdf');
调试
$pdf->streamdebug(); 函数对于快速查看PDF很有用,尤其是如果您的浏览器支持显示PDF而不是下载。
您可以在将其转换为PDF之前检查您的HTML
echo $mydataobject->renderWith('MyTemplate');die();
安装后,您需要进行以下操作;解析PDF模板到.html文件,让dompdf转换保存的.html文件
一个更高级的解决方案可能是:
class CustomPage_Controller extends Page_Controller {
public function mypdf(){
if($member = Member::currentUser()){
Requirements::clear();
if(!file_exists(ASSETS_PATH."/private")) mkdir(ASSETS_PATH."/private");
require_once 'Zend/Date.php';
$defaultDateFormat =Zend_Date::now()->toString($member->DateFormat);
$defaultTimeFormat = Zend_Date::now()->toString($member->TimeFormat);
$content = $this->customise(array(
'Member' => $member
))->renderWith(array('pdf'));
$filename=ASSETS_PATH."/private/current-pdf-{$member->ID}.html";
$baseFile = preg_replace('/\\.pdf$/','',$filename);
$fh = fopen($baseFile, "w+") or user_error("Couldn't open $baseFile.html for writing", E_USER_ERROR);
fwrite($fh, $content) or user_error("Couldn't write content to $baseFile.html", E_USER_ERROR);
fclose($fh);
$dompdf = new SS_DOMPDF();
$dompdf->load_html_file(ASSETS_PATH."/private/current-pdf-{$member->ID}.html");
if ( isset($base_path) ) {$dompdf->set_base_path($base_path);}
$paper = DOMPDF_DEFAULT_PAPER_SIZE;
$orientation = "portrait";
$dompdf->set_paper($paper, $orientation);
$dompdf->render();
$outfile = substr("{$member->FullName()}_{$defaultDateFormat}_{$defaultTimeFormat}", 0, 250).".pdf";
$dompdf->stream(Convert::raw2xml($outfile));
}
}
/**
* You may also like this 'test' function
**/
public function testpdf(){
if($member = Member::currentUser()){
Requirements::clear();
require_once 'Zend/Date.php';
$defaultDateFormat =Zend_Date::now()->toString($member->DateFormat);
$defaultTimeFormat = Zend_Date::now()->toString($member->TimeFormat);
$property=$member->SavedProperty();
$content = $this->customise(array(
'Member' => $member
))->renderWith(array('pdf'));
return $content;
}
}
}