|
|
<?php
|
|
|
|
|
|
namespace app\crm\controller;
|
|
|
|
|
|
use think\Controller;
|
|
|
use think\Request;
|
|
|
|
|
|
class Preview extends Controller
|
|
|
{
|
|
|
public function previewPdf(Request $request)
|
|
|
{
|
|
|
# 处理跨域
|
|
|
// header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']);
|
|
|
// header('Access-Control-Allow-Credentials: true');
|
|
|
// header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
|
|
|
// header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, authKey, sessionId");
|
|
|
# 相应类型
|
|
|
header('Content-Type: application/pdf');
|
|
|
header('Transfer-Encoding: chunked');
|
|
|
|
|
|
$key = $request->param('key');
|
|
|
|
|
|
$data = db('admin_printing_data')->field(['type', 'content'])->where('key', $key)->find();
|
|
|
|
|
|
$contentArray = json_decode($data['content'], true);
|
|
|
|
|
|
$content = $contentArray['data'];
|
|
|
$content = str_replace('\n', '', $content);
|
|
|
$content = str_replace('\\', '', $content);
|
|
|
|
|
|
require_once(EXTEND_PATH.'tcpdf'.DS.'config'.DS.'tcpdf_config.php');
|
|
|
require_once(EXTEND_PATH.'tcpdf'.DS.'tcpdf.php');
|
|
|
|
|
|
$tcpdf = new \TCPDF();
|
|
|
|
|
|
// 设置PDF页面边距:LEFT,TOP,RIGHT
|
|
|
$tcpdf->SetMargins(10, 10, 10);
|
|
|
|
|
|
// 设置默认等宽字体
|
|
|
$tcpdf->SetDefaultMonospacedFont('courier');
|
|
|
// 设置字体,防止中文乱码
|
|
|
$tcpdf->SetFont('simsun', '', 10);
|
|
|
|
|
|
// 设置文件信息
|
|
|
// $tcpdf->SetCreator(TITLE_NAME);
|
|
|
// $tcpdf->SetAuthor(TITLE_NAME);
|
|
|
$tcpdf->SetTitle("打印内容预览");
|
|
|
|
|
|
|
|
|
|
|
|
// 删除预定义的打印 页眉/页尾
|
|
|
$tcpdf->setPrintHeader(false);
|
|
|
|
|
|
// 设置文档对齐,间距,字体,图片
|
|
|
$tcpdf->SetCreator(PDF_CREATOR);
|
|
|
$tcpdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
|
|
|
$tcpdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
|
|
|
|
|
|
// 自动分页
|
|
|
$tcpdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
|
|
|
$tcpdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
|
|
|
$tcpdf->setFontSubsetting(true);
|
|
|
$tcpdf->setPageMark();
|
|
|
|
|
|
$tcpdf->AddPage();
|
|
|
$html = $content;
|
|
|
$tcpdf->writeHTML($html, true, false, true, true, '');
|
|
|
|
|
|
|
|
|
$tcpdf->lastPage();
|
|
|
$tcpdf->Output(ROOT_PATH.DS.'public'.DS.'temp'.DS.'pdf'.DS.'print.pdf','I');
|
|
|
|
|
|
exit($this->fetch('preview', ['key' => $key]));
|
|
|
}
|
|
|
} |