使用dompdf/dompdf实现生成pdf文件

news2024/12/23 10:32:27

一:dompdf/dompdf地址

github:https://github.com/dompdf/dompdf

packagist:http://packagist.p2hp.com/packages/dompdf/dompdf

二:dompdf/dompdf安装

composer require dompdf/dompdf

三:dompdf/dompdf简单实例

$pdf = new \Dompdf\Dompdf();
$content = 'pdf内容';
$pdf->loadHtml($content);
//设置纸张大小和方向
$pdf->setPaper('A4', 'landscape');
$options = new Options();
//设置使用远程图片填充pdf内容
$options->setIsRemoteEnabled(true);
$pdf->setOptions($options);
//将html转为PDF
$pdf->render();
//下载生成的pdf文件
$pdf->stream('xxx.pdf');

//将生成的pdf保存到服务器
file_put_contents('xxx.pdf',$pdf->output());

//将生成的pdf文件渲染到页面
$pdf->stream('xxx.pdf', [
    'compress' => 0,
    'Attachment' => 0
]);

四:解决生成的pdf文件中文乱码

1:下载字体包安装脚本utils

https://github.com/dompdf/utils

2:字体包安装脚本处理

将下载下来的安装脚本中的load_font.php文件拷贝到项目的vender平级目录下,然后将需要的字体包文件ttf也放到load_font.php同一级目录下(例如simsun.ttf)

3:执行字体包安装脚本

php load_font.php simsun simsun.ttf

4:修改安装字体包中的文件路径(注意:不操作此项再本机上是正常的,放到服务器就会有问题了)

找到dompdf\dompdf\lib\fonts\installed-fonts.json文件,这时候我们就可以看到我们刚刚安装的字体包

这里我们可以看到引入的字体包相关路径都是本机路径,我们可以看到 dompdf\dompdf\lib\fonts路径下存在我们需要的文件,修改引入路径即可,如:

 5:html使用字体包样式即可

body {
    font-family: simsun;
}

根据如上操作我们就可以解决中文乱码问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/100689.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

20221218-19英语学习

今日新词: wit n.智力; 头脑; 理解力; 风趣; 风趣的话语; 智者; 才子 alcohol n.酒精, 乙醇, 含酒精饮料 pub n.酒吧, 酒馆 instructor n.教员;教师 granted adv.(表示肯定属实,然后再作另一番表述)不错&#xff…

左神:高级进阶班4

1.让N个人过河所需最少船​编辑 2.最长回文子序列 3.最少添加字符让字符串变回文串​编辑 4.回文子串的最少切割次数 5.移除字符使字符串变回文串的方案数​编辑 1.让N个人过河所需最少船 思路:1.排序数组,用基数排序(元素(体…

计算机毕设Python+Vue学生信息管理系统(程序+LW+部署)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

推特群推营销解读

推特群推王发现,许多品牌使用社交媒体作为提供更好客户支持的一种渠道。使用社交媒体可以实时响应客户的需求。通过电子邮件获取品牌有时可能需要长达48小时。但是,通常在社交媒体上回应的时间要快得多。客户将通过你的品牌发推文,你将在手机…

被动与主动信息收集 | 系统性学习 | 无知的我费曼笔记

文章目录信息收集-被动信息收集介绍收集手段收集内容信息用途信息收集-域名解析过程以手段域名解析过程信息收集 DNS**DNS 信息收集-NSLOOKUP****DNS 信息收集-DIG****查询网站的域名注册信息和备案信息**信息收集-被动信息收集手段大全**使用 Maltego 收集子域名信息**子域名介…

【论文简述】PatchmatchNet: Learned Multi-View Patchmatch Stereo(CVPR 2021)

一、论文简述 1. 第一作者:Fangjinhua Wang 2. 发表年份:2021 3. 发表期刊:CVPR 4. 关键词:MVS、深度学习、Patchmatch、自适应、迭代优化 5. 探索动机:可扩展性、时间、内存占用等效率问题依然没有解决。 While…

【电气安全】关于医疗专用隔离电源系统在医院配电系统中的应用

【摘要】 根据医疗场所分类说明医院尤其是 2 类 医疗场所的接地方案,分析医疗场所自动切断电源措 施,提出校验医疗 IT 系统配出回路长度;说明 RCD、RCM、IMD、IFLS 等的用途和范围;就应急医 院 2 类场所的配电方案进行探讨。 【…

JavaScript刷LeetCode拿offer-双指针技巧(上)

一、前言 一般情况下,遍历数组(或者字符串)操作,都是采用单指针从前往后或者从后往前依次访问数组(或者字符串)中的元素。 而对于以下情况,只采用单指针处理,则会徒增时间复杂度和…

统计学习方法 | 概论

一.简介 统计学习是关于计算机基于数据构建概率统计模型并运用模型对数据进行预测与分析的一门学科 1.统计学习方法的步骤 ①得到一个有限的训练数据集合 ②确定学习模型的集合(模型) ③确定模型选择的准则(策略) ④实现求解…

Python的安装与配置(图文教程)

安装Python 想要进行Python开发,首先需要下载和配置Python解释器。 下载Python 访问Python官网: https://www.python.org/点击downloads按钮,在下拉框中选择系统类型(windows/Mac OS/Linux等)选择下载最新版本的Python安装Python 双击下载好的Python…

五款几乎没人知道的小众软件,按需下载

分享是一种神奇的东西,它使快乐增大,它使悲伤减小,坚持分享一些好用的软件给大家。 1.开源分享工具——ShareX ShareX 是一款 Windows 上开源的截图、文件共享和生产力工具,它是一款功能非常强大的分享工具,只要是免…

【算法】可解释机器学习-ZFNet(Datawhale)

可解释机器学习-ZFNetZFNet算法介绍:AlexNet的提出使得大型卷积网络开始变得流行起来,但是人们对于CNN网络究竟为什么能表现这么好,以及怎么样能变得更好尚不清楚。 因此为了解决上述两个问题,ZFNet提出了一种可视化技术&#xff…

如何治理谐波问题?——有源滤波器

安科瑞 华楠 一、谐波的定义 任何一种周期性非正弦波形都可以看成是由若干种频率不同的正弦波合成的,其中频率为工频的波形我们称为基波,大于1 整数倍基波频率的正弦波分量称为谐波。 总谐波畸变由不同频率的分次谐波合成,各次谐波频率与基…

asp写的百度ocr识别文字-通用文字识别(高精度版)源码下载

今天接到一个客户需求,需要用ASP写一个百度OCR文字识别代码,他的程序都是用ASP写的,所以我们也需要用ASP给他实现百度OCR文字识别,我们在百度AI网站上启用了通用文字识别高精度版,利用高精度板来实现它的业务需求。在上…

【C++】泛型编程 _函数模板和类模板的基本使用

1.泛型编程 如何实现一个通用的交换函数?这在C语言中是无法实现的,但是C却可以。 C语言一次只能实现一个类型的交换: void Swap(int& left, int& right) {int temp left;left right;right temp; } void Swap(double& left, …

计算机毕设Python+Vue学生信息管理系统 (程序+LW+部署)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

关于小程序订单中心页设置的公告

为进一步规范小程序交易生态、提升用户购物体验、满足用户在有交易的小程序中便捷查看订单信息的诉求,自2022年12月31日起,对于有“选择商品/服务-下单-支付”功能的小程序,需按照平台制定的规范,在小程序内设置订单中心页。 开发…

创建DataFrame()对象--Pandas

1. DataFrame DateFrame对象是Pandas最常用的数据结构,是由不同类型的列组成的二维数据表结构,类似于EXCEL表,语法格式如下: pandas.DataFrame(dataNone, indexNone, columnsNone, dtypeNone, copyNone)1.1 函数参数:data 参数…

计算机操作系统笔记总结:Part2 进程与线程

文章目录1 进程1.1 进程的概念、组成与特征1.2 进程的状态与转换1.3 进程的组织1.4 进程控制1.5 进程通信2 线程与多线程模型2.1 线程的概念2.2 线程的实现方式2.3 多线程模型2.4 线程的状态与转换3 处理机调度3.1 调度的三个层次3.2 进程的挂起态与七状态模型3.3 进程调度3.3.…

[附源码]Nodejs计算机毕业设计健身房预约平台Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分…