PHP 使用html创建PDF并设置水印

news/2025/2/16 0:33:17/

使用TCPDF库给PDF文件加水印,需要注意无法直接使用文本,需要创建水印图片后,通过图片来设置水印效果。

 

目录

创建PDF

创建合同模板

创建pdf文件

简单创建

设置文档信息

去掉默认页头脚

设置间距

设置字体支持中文

设置图片比例因子

设置自动分页

写入内容(插入图片使用)

设置水印

简单水印

每页水印

获取总页数

循环设置水印

旋转水印

总结


创建PDF

创建合同模板

创建使用制作pdf文档的html合同模板。

注意:css部分样式pdf不支持,比如浮动、悬浮等,只支持一些基本的样式设置。

内容如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>购销合同</title>
</head>
<body>
<div class="content"><h3 align="center">购销合同</h3><p>(供方)(以下简称乙方):</p><p>经协商同意,根据中华人民共和国经济法的规定,订立合同如下:</p><p>一、 产品名称、商标、型号、厂家、数量、价格、供货时间:</p><p>二、 质量要求技术标准、供方对质量负责的条件和期限:按技术协议</p><p>三、 交(提)货地点、方式:使用快递</p><p>四、 运输方式及到达站港和费用负担:送货上门、供方负担</p><p>五、 合理损耗及计算方法:无</p><p>六、 包装标准、包装物的供应与回收:原包装、不回收。</p><p>七、 验收标准、方法及提出异议期限:按原厂技术标准验收,需方收到货后提出异议期限为十五天。</p><p>八、 结算方式及期限:货到验收合格、发票到后一周内付款。</p><p>九、 违约责任:如发生质量问题,需方将提出索赔。具体事宜协商解决。</p><p>十、 解决合同纠纷的方式:合同发生争议时,双方应协商解决,协商不成时,任何一方可向经济合同仲裁委员会申请仲裁,或直接向人民法院起诉。</p><p>十一、 其它事项:本合同一式两份,双方各执一份,经双方签字盖章有效,均有法律效力。</p><p>&nbsp;&nbsp;</p>..........
</div>
</body>
</html>

 

创建pdf文件

调用tcpdf来创建pdf文件并加入通过laravel获取的动态html字符串内容。

简单创建

$pdf = new \TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);//设置字体 stsongstdlight支持中文
$pdf->SetFont('msyh', '', 10);// 第一页
$pdf->AddPage();// 这里获取html内容
$html = file_get_contents('./test.html');
$pdf->writeHTML($html, $ln = true, $fill = false, $reseth = false, $cell = false, $align = '1');// 四种模式 I输出、D下载、F保存本地、S输出二进制字符串
$pdf->Output('test.pdf', 'I');

设置文档信息

$pdfName = '测试合同';
$pdf->SetCreator($pdfName);
$pdf->SetAuthor('YJL');
$pdf->SetTitle($pdfName);
$pdf->SetSubject($pdfName);

去掉默认页头脚

$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
$pdf->setFontSubsetting(false);

设置间距

$pdf->SetMargins(10, 5, 10, true);

设置字体支持中文

$pdf->SetFont('stsongstdlight', '', 10);

设置图片比例因子

$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

设置自动分页

即距离底部多少进行分页

$pdf->SetAutoPageBreak(true, PDF_MARGIN_BOTTOM);

写入内容(插入图片使用)

writeHTML方法也可插入html内容到pdf,但是插入图片需要改为writeHTMLCell方法

$pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '1', true);

设置水印

简单水印

可通过设置图片透明度和插入图片来设置水印

参数1-2:xy轴坐标

参数3-4:图片宽高,不设置为图片默认宽高

$pdf->SetAlpha(0.4);
$pdf->Image('./images/water_img.png', 50, 100, 0, 0);

每页水印

获取总页数

$page_num = $pdf->getPage();

或者

$page_num = $pdf->PageNo();

循环设置水印

以总页数为条件进行循环,在每一页(50, 100)坐标处 ,设置透明度和水印图片。

for ($i = 1; $i <= $page_num; $i++) {$pdf->setPage($i);$pdf->SetAlpha(0.3);$pdf->Image('./images/water_img.png', 50, 100);
}

旋转水印

通过pdf Rotate方法来设置图片旋转

三个参数:

Angle:旋转角度

x:横坐标

y:纵坐标

代码如下:

// 获取pdf文档页数
$page_num = $pdf->getPage();
// 设置水印
for ($i = 1; $i <= $page_num; $i++) {$pdf->setPage($i);$pdf->SetAlpha(0.4);// 旋转角度$pdf->Rotate(20, 30, 50);$pdf->Image('./images/water_img.png', 30, 50, 0, 10);$pdf->Image('./images/water_img.png', 10, 150, 0, 10);$pdf->Image('./images/water_img.png', -10, 250,0, 10);
}

效果:

总结

研究tcpdf应用pdf有很长一段时间了,还是有一个问题没法解决,就是如何获取pdf关键字坐标?倒是用python可以获取pdf文档关键字坐标,但是还是尺寸问题无法换算。


http://www.ppmy.cn/news/345001.html

相关文章

python使用HTTP隧道代理代码示例模板

以下是使用HTTP隧道代理的Python代码示例模板&#xff1a; python import requests # 设置代理服务器地址和端口号 proxy_host "your_proxy_host" proxy_port "your_proxy_port" # 设置代理服务器的用户名和密码&#xff08;如果需要&#xff09; pr…

MapBox实现框选查询,多边形范围查询

还是老规矩先来看效果&#xff1a; mapbox官方没有为我们提供框选查询的案例&#xff0c;所以这个功能需要我们自己写。在openlayers框架中是有一个矩形范围查询的例子&#xff0c;但是在maobox没有。 那么我们就来说一下如何来做这个效果吧&#xff0c;首先这个效果可以分为两…

第七十一天学习记录:对陈正冲编著《C 语言深度解剖》中关于1、2、4,5章作者留下部分问题的学习

问&#xff1a;有如下代码。 static int j;void fun1(void) {static int i 0;i; }void fun2(void) {j 0; j; }int main() {int k 0;for (k 0; k<10; k){fun1();fun2();}return 0; }i 和 j 的值分别是什么,为什么&#xff1f; 答&#xff1a; 在这份代码中&#xff0c;变…

IP地址定位原理

IP地址定位是一种通过IP地址来确定位置的技术&#xff0c;在互联网和移动网络的应用十分广泛。本文将介绍IP地址定位的原理和实现方式。 IP地址定位原理 IP地址是Internet Protocol&#xff08;简称IP&#xff09;的缩写&#xff0c;是互联网上的一个地址标识符用于识别连接到…

干洗店洗护软件,洗鞋店软件,洗鞋店小程序,

干洗店洗护软件&#xff0c;洗鞋店软件&#xff0c;洗鞋店小程序&#xff0c;水洗标打印标签打印&#xff0c;上门取送&#xff0c;拍照上传&#xff0c;多门店多网点&#xff0c;用户端&#xff0c;骑手端&#xff0c;门店端&#xff0c;网点端。具有以下非常强大的功能和优势…

轻松去除rar/zip密码

在生活中&#xff0c;常常会碰到无法打开RAR/ZIP压缩包的情况&#xff0c;这时候你是否会感到焦虑呢&#xff1f;别担心&#xff0c;最简单的解决办法就是百度搜索“密码帝官网”&#xff0c;然后点击“立即开始”&#xff0c;在用户中心上传文件即可找回RAR/ZIP压缩包的密码。…

IP-GUARD是否支持对打了水印的文档去除水印?

是否支持对打了水印的文档去除水印&#xff1f; 支持&#xff0c;从4.64.1005.0版本开始&#xff0c;支持对打了文档水印的文档做去水印的操作&#xff0c;但只是支持去除非图片类型的显式水印。支持右键文件去除、申请去除、自我备案去除三种方式。 例如&#xff1a; 对客户端…

日语五十音,电脑壁纸,手机壁纸自制纪念

在家没事&#xff0c;学学日语啦&#xff0c;希望自己能坚持下去哟哟&#xff01;&#xff01;