mattclegg / silverstripe-dompdf

dev-master 2020-05-21 11:48 UTC

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;
	}
}

}