项目需求:在后台上传的pdf上自动加上水印,防止别人盗用,在一定程度上可以起到保护作用,以前没有做过只有在图片上加水印,分享一下百度的案例;
需要用到的插件
fpdf
fpdi
下面github地址可以在项目中下载这两个文件
https://github.com/laiyuxiang/pdf_watermark/
1.添加图片水印
vendor('fpdf.fpdf',"",".php");//引入文件
vendor('fpdi.fpdi',"",".php");//引入文件
$pdf=new\FPDI();
$pageCount=$pdf->setSourceFile($file);//文件地址
for($pageNo=1;$pageNo<=$pageCount;$pageNo++)
{
$templateId=$pdf->importPage($pageNo);
//获取导入页面的大小
$size=$pdf->getTemplateSize($templateId);
//创建页面(横向或纵向取决于导入的页面大小)
if($size['w']>$size['h'])$pdf->AddPage('L',array($size['w'],$size['h']));
else$pdf->AddPage('P',array($size['w'],$size['h']));
//usetheimportedpage
$pdf->useTemplate($templateId);
//放置图形
$pdf->image($img,75,85,50);\\img水印图片,后面的是水印在pdf中坐标
}
$pdf->Output($file_dir.$file_url);
二、加文字水印
vendor('fpdf.fpdf',"",".php");
vendor('fpdi.fpdi',"",".php");
$pdf=new\FPDI();//初始
//文件地址
$pageCount=$pdf->setSourceFile($file);
for($pageNo=1;$pageNo<=$pageCount;$pageNo++)
{
//导入pdf
$templateId=$pdf->importPage($pageNo);
//获取pdf的大小
$size=$pdf->getTemplateSize($templateId);
//创建页面(横向或纵向取决于导入的页面大小)
if($size['w']>$size['h'])$pdf->AddPage('L',array($size['w'],$size['h']));
else$pdf->AddPage('P',array($size['w'],$size['h']));
$pdf->SetFont('Arial','B','12');//设置文字的字号字
$pdf->SetXY(0,0);//文字所在位置这个x,y值,自己调
$pdf->Write(7,'1111');//写入内容大小
}
$pdf->Output('word.pdf');
这样就可以,原图效果如下:
导出图片如下:
如图达到了在图片上加上图片印章的效果:
下面是加上文字的效果:
感觉还是加图片效果更好。而且中文会乱码,这个问题没有去解决因为我只需要加图片水印,猜想应该是页面编码和 arial字体原因。
$pdf->Write(7,'这是水印');//写入内容大小
header("Content-type:text/html;charset=utf-8");
定义了页面编码是utf-8 输出的文字还是乱码
$pdf->SetFont('宋体','B','12');//设置文字的字号字
我尝试将字体改成中文的最后发现不支持
新闻名称:php程序如何在pdf文档上加上水印
路径分享:https://www.cdcxhl.com/news41/235641.html
成都网站建设公司_创新互联,为您提供网站建设、ChatGPT、网页设计公司、品牌网站制作、品牌网站建设、网站制作
广告
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源:
创新互联