PHPExcel生成excel + mpdf导出pdf中文乱码处理

2024-06-09 10:08

本文主要是介绍PHPExcel生成excel + mpdf导出pdf中文乱码处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

mpdf页眉页脚设置:

$mpdf = new mPDF('+aCJK','A4','','',0,0,15,15,3,3);//字体,'','','',左右边距0,0,上下距离15,15,页眉页脚边距3,3
$mpdf->autoScriptToLang = true;
$mpdf->autoLangToFont = true;
$mpdf->SetHTMLHeader($header);
$mpdf->SetHTMLFooter($footer);
$mpdf->SetDisplayMode('fullpage');
$mpdf->WriteHTML($html);
$mpdf->Output(FILE_UPLOAD.$pdfFile, 'F');

phpexcel常用处理

##导入类库 

require 'PHPExcel/Classes/PHPExcel.php'; require 'PHPExcel/Classes/PHPExcel/Writer/Excel5.php'; //非07格式的写出类 ##基础属性设定$objPHPExcel = PHPExcel_IOFactory::load('a.xls'); //读入指定excel文件$objPHPExcel->setActiveSheetIndex(0); //指定活动工作表$objPHPExcel->getActiveSheet()->getDefaultStyle()->getFont()->setName('宋体');$objPHPExcel->getProperties()->setTitle('xxx'); //单元格编辑$objPHPExcel->getActiveSheet()->setCellValue('A3','xxx');//设定A3单元格值为xxx ##单元格绘图 $objDrawing = new PHPExcel_Worksheet_Drawing(); $objDrawing->setPath('a.jpg');//指定图片路径。若要远程图片需PHPExcel/Classes/PHPExcel/Worksheet/Drawing.php:106处file_exists换成file_get_contents$objDrawing->setCoordinates('A4'); //指定在A4单元格绘图$objDrawing->setName('Photo');$objDrawing->setDescription('Photo');$objDrawing->setHeight(120); $objDrawing->setWidth(100);$objDrawing->setOffsetX(7); $objDrawing->setOffsetY(7);$objDrawing->setWorksheet($objPHPExcel->getActiveSheet());

##excel文件浏览器下载导出 

$filename='a.xls'; $encoded_filename = rawurlencode($filename); if($filename){ $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5');$objWriter->save($filename);//保存excel文件}

利用mpdf库从phpexcel导出pdf文件

$filename='a.pdf';$encoded_filename = rawurlencode($filename);$rendererName = PHPExcel_Settings::PDF_RENDERER_MPDF;//指定通过mpdf类库导出pdf文件 $rendererLibraryPath = 'PHPExcel/MPDF60';//指定你下载的mpdf类库路径 if(!PHPExcel_Settings::setPdfRenderer($rendererName,$rendererLibraryPath)){ die( 'Please set the $rendererName and $rendererLibraryPathvalues'.PHP_EOL.'as appropriate for your directory structure' ); }$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF');$objWriter->setSheetIndex(0); $objWriter->save($filename);

############################## ##pdf导出失败的一些错误解决方法

############################## ##1

pdf中文乱码问题 PHPExcel/Classes/PHPExcel/Writer/PDF/mPDF.php:105处加两行设定:

$pdf->useAdobeCJK= true; //添加这一行就行//$pdf->SetAutoFont(AUTOFONT_ALL);//可在config.PHP文件,大约67行 修改$this->autoLangToFont = true; //##2

类库里面多处preg_replace调用使用了元字符e,而部分低版本php不支持正则表达式e元字符

e元字符的不当使用并导致pdf报错的触发点在类库里面大概有五六处吧,

由于e元字符是一个shell下的子进程php调用,所以报错信息不会反馈到当前php进程中,故即便你配置了错误打印到屏幕,

页面也不会显示报错信息, 必须查看php报错日志

查看php报错日志,把提示的preg_replace中元字符e的调用替换为preg_replace_callback形式的调用 ##3

部分版本phpexcel类库有单元格样式判断错误

lib/PHPExcel/Classes/PHPExcel/Writer/HTML.php:1236处加个if判断 ​​​​​​​

if(!$this->_useInlineCss){ $cssClass.= ' style' .$pSheet->getCell($endCellCoord)->getXfIndex();
}

这篇关于PHPExcel生成excel + mpdf导出pdf中文乱码处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1044875

相关文章

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口

使用Python删除Excel中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Spring Boot @RestControllerAdvice全局异常处理最佳实践

《SpringBoot@RestControllerAdvice全局异常处理最佳实践》本文详解SpringBoot中通过@RestControllerAdvice实现全局异常处理,强调代码复用、统... 目录前言一、为什么要使用全局异常处理?二、核心注解解析1. @RestControllerAdvice2

Redis出现中文乱码的问题及解决

《Redis出现中文乱码的问题及解决》:本文主要介绍Redis出现中文乱码的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 问题的产生2China编程. 问题的解决redihttp://www.chinasem.cns数据进制问题的解决中文乱码问题解决总结

Java easyExcel实现导入多sheet的Excel

《JavaeasyExcel实现导入多sheet的Excel》这篇文章主要为大家详细介绍了如何使用JavaeasyExcel实现导入多sheet的Excel,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录1.官网2.Excel样式3.代码1.官网easyExcel官网2.Excel样式3.代码

Java Web实现类似Excel表格锁定功能实战教程

《JavaWeb实现类似Excel表格锁定功能实战教程》本文将详细介绍通过创建特定div元素并利用CSS布局和JavaScript事件监听来实现类似Excel的锁定行和列效果的方法,感兴趣的朋友跟随... 目录1. 模拟Excel表格锁定功能2. 创建3个div元素实现表格锁定2.1 div元素布局设计2.