dompdf,这么做就可以支持中文了

laravel-dompdf导出pdf,中文乱码问题解决 laravel-dompdf导出中文pdf 阅读详情
AI摘要

本文介绍如何使用DOMPDF生成PDF文档,并解决中文乱码问题。通过安装配置、下载字体及使用自定义工具包实现中文正常显示。

最近在研究如何用PHP生成pdf文档,首先测试了tcpdf,但是它对html的样式支持不尽人意最后放弃了。

dompdf进入了我的视野,马上安装体验了一番

composer require dompdf/dompdf

现在假定你的环境是支持composer的

    /**
	 * 生成dompdf
	 */
    public function create_dompdf()
    {
	    $dompdf = new Dompdf();
	    $html = View::fetch('reportv2');
	    $dompdf->loadHtml($html,'UTF-8');
	    $dompdf->setPaper('A4','portrait');
	    $dompdf->render();
	    $filename = 'dom_'. date('His') .'.pdf';
	    $dompdf->stream($filename);
    }

上述是调用Dompdf的代码,比较简单, 参照文档即可。运行结果如下

现在关键问题来了,如何正常显示中文呢

参考了此文章,并在此基础上进行了实际操作验证。

解决Dompdf中文乱码问题https://blog.youkuaiyun.com/hwhsong/article/details/88579332第一步:下载Dompdf的工具包

该工具包的Git地址为:https://github.com/dompdf/utils。

下载完成后,解压,复制其中的load_font.php文件到项目下的vendor/dompdf/dompdf目录下,与lib和src目录同级。

第二步:修改load_font.php文件

因为把该文件直接复制放在了dompdf目录下,因此需要修改加载autoloader的路径

// 1. [Required] Point to the composer or dompdf autoloader
//require_once "vendor/autoload.php";
require_once dirname(dirname(__DIR__)) . '/autoload.php';

第三步:下载字体文件

可以使用任意支持中文的字体文件,这里以微软雅黑(msyh)为例,该字体涉及版权,需要自行搜索下载,下载完成后,我们把该字体文件 msyh.ttf 直接放在load_font.php同一目录

第四步:安装字体文件

在放置load_font.php的dompdf目录下,使用系统命令行工具执行该文件,具体命令如下:

php load_font.php msyh msyh.ttf

注意:命令中的字体名称msyh不要加引号,否则后续将不可用。执行结果参考:

第五步:检查字体是否安装成功

 如果字体安装成功,则可以在项目的vendor/dompdf/dompdf/lib/fonts目录中看到新生成的 msyh.ttf及 msyh.ufm文件。并且可以在该目录下的 installed-fonts.json 文件中看到如下相关信息:

{
    "msyh": {
        "normal": "msyh_normal_adfabab12a9c7844decdb414a59f4a61",
        "bold": "D:\\xampp\\htdocs\\test\\vendor\\dompdf\\dompdf\/lib\/fonts\/msyh",
        "italic": "D:\\xampp\\htdocs\\test\\vendor\\dompdf\\dompdf\/lib\/fonts\/msyh",
        "bold_italic": "D:\\xampp\\htdocs\\test\\vendor\\dompdf\\dompdf\/lib\/fonts\/msyh"
    }
}

 使用中文字体:

关键的一句:body {font-family: "msyh";},指定字体名称

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title>2022</title>
		<link href="layui/css/layui.css" rel="stylesheet">
		<style>
			body {
				font-family: "msyh";
			}
		</style>
	</head>
	<body>
		<div class="layui-container">
			<div class="layui-row">
				<div class="layui-col-md12">
					<h3>你好,中国!Hello China! 2022</h3>
				</div>
			</div>
		</div>
	</body>
</html>

 看看效果吧!

然而这仅仅是开始,后面还遇到了好多问题。

dompdf中文乱码、换行解决方案icon-default.png?t=M5H6https://blog.youkuaiyun.com/kelinfeng16/article/details/84135308 

php 生成 pdf dompdf 库使用 阅读详情

相关推荐

dompdf完美支持中文

我在是网上下载的dompdf,然后自己安装了一个msyh中文字体, 并且,在encoding_unicode.html文件里面,body的样式,里面加上了msyh字体 编码不变,还是utf8编码 现在在Examples里面的 [HTML] [PDF] unicode 实例中,可以实现中文了, 如果你想在demo里面实现自定义的中文,请将浏览器的网页编码改成utf8,我的网页好似默认是gbk的,现在好了

dompdf使用教程_使用Dompdf将HTML转换为PDF

dompdf使用教程PDF is a standard format originally created by Adobe for representing text and images in a fixed-layout document. It’s not uncommon for a web application to support downloading data, such as...

culi4814的博客 6474

PHP生成PDF,支持中文,包含示例

PHP生成PDF,支持中文,包含示例

dompdf中文乱码、换行解决方案

前言   因为工作需要,需要使用PHP生成PDF,开始接触dompdf这个类库,dompdf可以把HTML文件生成PDF。   无奈使用的过程中遇到很多坑,细数dompdf的一些坑,中文乱码,中文换行,纸张问题,生成文档,无奈还是使用,只能硬着头皮去找解决方案,网上许多方法只讲了一部分,没有发现一个好完整的解决方案,大多是随意复制粘贴,或者答非所问。   最后自己东拼西凑,终于整理出完整的解决方案...

无痕之意的博客 1万+

智能车赛道识别:八邻域算法的实战解析与优化

本文深入解析了智能车赛道识别中八邻域算法的核心原理与实战优化。作为兼顾性能与稳定性的经典方案,该算法通过模拟探险家环顾八方的策略,能精准追踪弯道与直道边界。文章详细拆解了代码逻辑,并提供了边界平滑、异常处理及应对十字路口、环岛等复杂场景的关键优化策略,助力开发者提升智能车视觉系统的鲁棒性与实时性。

weixin_29228781的博客 261

pytorch超详细安装教程,Anaconda、PyTorch和PyCharm整套安装流程

本文介绍基于Anaconda环境以及与PyCharm结合,安装PyTorch深度学习框架。

Bluebro的博客 19万+

DomPDF的中文支持

1.安装DomPDF 这里笔者使用的是composer安装方式: composer require dompdf/dompdf 2.下载dompdf字体工具脚本 git clone https://github.com/dompdf/utils.git 将文件夹中的load_font.php复制到 dompdf目录中,与lib 和 src 目录同级 3.下载支持中文的ttf字体 ...

大O的博客 7961

别再乱选保护板了!手把手教你用ABLIC S-8254A为3/4串锂电池组DIY安全保护电路

本文详细介绍了如何使用ABLIC S-8254A保护集成电路为3/4串锂电池组DIY安全保护电路。从选型策略、电路搭建到功能验证,手把手教你实现可靠的充放电保护系统,适用于无人机、电动工具等场景,确保锂电池组的安全使用。

weixin_42525264的博客 189

Dompdf创建pdf文件并支持中文

直接安装的dompdf并不支持中文,本文将介绍如何设置,并提供两种使用方法。

json_li的博客 1949

手把手教你用AD9834 DDS模块DIY一个可调信号源(附AD原理图/PCB/程序)

本文详细介绍了如何使用AD9834 DDS模块DIY一个高精度可调信号源,涵盖硬件搭建、原理图解读、PCB优化和程序烧录等关键步骤。通过STM32控制实现0-10MHz频率范围输出,特别适合电子设计与射频实验,提供完整的AD原理图、PCB设计和程序代码参考。

weixin_31854867的博客 407

File does not exist: /user/anonymous/.staging/job_1628851608378_6064/报错问题解决

user/admin/.staging/job_1571397171638_0001/job_1571397171638_0001_1.jhist 所以为什么没有下发,这里面jhist,只是被引发的错误,它还不是根本的错误。看到上面错误,我们就可以判断,这是网络问题,然而网络无非是ip地址,防火墙,端口,hosts等。我们正常的hosts是这样的。在回头复盘想想,我们找不到jhist,跟我们的网络问题二者是很难找到关联的,所以大家在遇到问题的时候,一定多排查和思考,而不是看到一个错误,就以为是它的问题。

石榴姐yyds 2170

dompdf 设置中文 中文乱码 乱码 如何支持中文

网上找了一圈各路解决办法着实有点傻逼。是在受不了。还有那个**所谓的字体工具竟然将字体装在vendor里,并且配置字体的文件也在vendor里,我人麻了。这不是搞笑吗。行了也不吐糟了。看源码给提供的方式把。哎。 <?php require 'vendor/autoload.php'; // reference the Dompdf namespace use Dompdf\Dompdf; $html = <<<EOD <html> <head> &lt

u012376713的博客 1555

199、医疗内窥镜影像:微型镜头与高色彩保真度的ISP定制化方案

医疗内窥镜影像系统开发面临三大光学挑战:衍射极限导致分辨率下降,微型镜头色差严重,镀膜不足引发红外漏光。团队通过定制化ISP方案解决问题:采用分区色差补偿、红外泄露补偿技术,开发12区域分段颜色校正矩阵,并设计自适应伽马曲线。关键经验包括锁定白平衡避免术中偏色,优化FPGA流水线确保30fps流畅度,强调光学标定优先于算法优化。最终方案使DeltaE降至3以下,满足医生对组织颜色细微差异的识别需求,尤其解决了血管与脂肪边界辨识难题。

zzfmlxs的博客 264

php 生成 pdf ,dompdf 库使用

中文支持弄好了。但是发现了中文不自动换行的情况。 在网上找了解决办法: ================ 最近刚好需要生成PDF文档,供下载打印用…… 找了不少PDF工具,发现DOMPDF是最好用的,支持HTML最好。 顺便把其中遇到的问题也记录一下: 1.HTML要用table排版 用DOMPDF生成HTML文档,首先要先解决这个问题,没用DOMPDF生成过

程序员写的技术 FAQ 和杂文 9932

一步一步教你如何安装IP-Guard(客户端WINDOWS篇)

1、安装完服务器后,在服务器右下角有一个IP-GUARD图标:如图 2、点图标右键选注册: 3、注册成功后, 4、在开始菜单里选生成客户端安装包。 5、生成客户端安装包成功,安装名字可以任意,但是最好是英文名字。 6、将客户端安装程序复制到桌面。 7、退出所有杀毒软件、安全卫士、电脑管家等然后运行 8、安装完成后,立即重启计算机。IPguard客户端安装完成。 9、这样在控制里就可以看到已经安装客户端的计算机,在线显示蓝色,灰色表示计算机已经离线货关机 ...

IP-Guard专栏 5627

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

dompdf php乱码,PHP使用dompdf生成PDF文件笔记

网上查了很多资料,php的dpf库很多,能支持html的很少,星多用的多的可能就是dompdf了,如果有更好的留言指点,谢谢~~安装composer require dompdf/dompdf安装后使用过程中发现中文会显示????尝试各种编码修改都无效,经查证是因为字体问题导致的实现中文支持1.下载类库语言安装脚本 https://github.com/dompdf/utils.git2.将里面的...

weixin_29276847的博客 575

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

php dompdf 使用

php dompdf 使用

ufryyfdf的博客 300

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

php生成pdf文件DomPDF

相关链接: https://github.com/dompdf/dompdf DomPDF的中文支持: https://blog.youkuaiyun.com/u012560213/article/details/80914406 DomPDF使用记录: https://blog.youkuaiyun.com/nx_xn/article/details/89534120 https://cloud.tencent.com...

大脸猫脸大 550

Laravel-Dompdf终极中文显示指南:完美解决字体乱码问题

Laravel-Dompdf是一个强大的HTML转PDF工具,为Laravel开发者提供了简单易用的PDF生成解决方案。但是很多开发者在处理中文内容时都会遇到字体显示问题,今天我们就来详细解决这个难题!😊 ## 🎯 中文显示问题的根源 在使用laravel-dompdf生成包含中文内容的PDF时,最常见的两个问题是: 1. **字体缺失导致的乱码** - 默认字体不支持中文字符 2. *

gitblog_01110的博客 956

Thinkphp 使用Dompdf

Thinkphp5 使用dompdf导出pdf文件

weixin_43992801的博客 921

dompdf 中文乱码问题github

Dompdf可以把HTML内容生成PDF文件,但默认不支持中文显示。 在解决Dompdf的中文乱码问题之前,请确认已通过Composer在项目中安装好Dompdf库。 下载Dompdf的工具包 该工具包的Git地址为:https://github.com/dompdf/utils。 下载完成后,解压,复制其中的load_font.php文件到项目下的verdor/dompdf/dompdf目录下,...

书山有路_邓 1066

如何使用 Dompdf:从 HTML 轻松转换 PDF 的免费开源工具

Dompdf 是一款强大的 PHP 开源库,能够将 HTML 内容快速转换为高质量的 PDF 文件。作为 GitHub 加速计划中的重要项目,它为开发者提供了免费、可靠的 HTML 转 PDF 解决方案,特别适合需要在 PHP 应用中生成报告、发票或文档的场景。 ## 📋 准备工作:安装 Dompdf 的两种简单方法 ### 方法一:使用 Composer 一键安装 最推荐的安装方式是通过

gitblog_00268的博客 923

玩转DOMPDF:10分钟掌握HTML转PDF的终极指南

想要快速将HTML网页转换为专业PDF文档吗?DOMPDF就是你的最佳选择!这款强大的PHP库能够将HTML和CSS完美转换为高质量的PDF文件,支持复杂表格、图片嵌入和多种字体格式。无论你是开发者还是普通用户,都能轻松上手,让文档转换变得简单高效。 ## 🚀 什么是DOMPDF? DOMPDF是一个基于PHP的HTML到PDF转换器,它完全兼容CSS 2.1标准,能够读取外部样式表、内联样

gitblog_00431的博客 358
上一篇: CentOS 7.9 编译安装PHP 7.4.30
下一篇: MySQL 8.0.29在my.cnf设置sql_mode之后MySQL无法启动
JadePlus
博客等级 码龄19年 41粉丝 74原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值