php实现报表打印
PHP实现报表打印的方法
使用HTML转PDF库
在PHP中,可以通过将HTML报表转换为PDF格式来实现打印功能。常用的库包括TCPDF、FPDF和Dompdf。
安装TCPDF:
composer require tecnickcom/tcpdf
生成PDF报表示例:
require_once('tcpdf/tcpdf.php');
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->AddPage();
$pdf->SetFont('helvetica', 'B', 16);
$pdf->Cell(0, 10, '销售报表', 0, 1, 'C');
$pdf->SetFont('helvetica', '', 12);
$pdf->Cell(0, 10, '日期: '.date('Y-m-d'), 0, 1);
$pdf->Output('report.pdf', 'I');
直接打印HTML报表
对于简单的打印需求,可以直接使用浏览器的打印功能。
CSS媒体查询控制打印样式:
@media print {
.no-print {
display: none;
}
body {
font-size: 12pt;
}
}
JavaScript触发打印:

window.print();
使用PHPExcel/PhpSpreadsheet
对于需要导出Excel后再打印的场景,可以使用PhpSpreadsheet库。
安装PhpSpreadsheet:
composer require phpoffice/phpspreadsheet
生成Excel报表示例:

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', '销售报表');
$sheet->setCellValue('A2', '产品名称');
$sheet->setCellValue('B2', '销售量');
$writer = new Xlsx($spreadsheet);
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="report.xlsx"');
$writer->save('php://output');
打印服务器设置
对于企业级应用,可以考虑配置专门的打印服务器:
- 在Linux系统上安装CUPS打印系统
- 配置PHP与CUPS的接口
- 使用exec()或shell_exec()发送打印命令
示例打印命令:
exec('lp -d printer_name report.pdf');
浏览器打印API集成
现代浏览器提供了更强大的打印API集成能力:
JavaScript打印配置示例:
const printContents = document.getElementById('report').innerHTML;
const originalContents = document.body.innerHTML;
document.body.innerHTML = printContents;
window.print();
document.body.innerHTML = originalContents;
每种方法适用于不同场景,HTML转PDF适合需要精确控制打印格式的情况,直接打印HTML适合简单报表,Excel导出适合需要后期编辑的场景,而打印服务器适合企业级批量打印需求。






