項(xiàng)目需求:在后臺(tái)上傳的pdf上自動(dòng)加上水印,防止別人盜用,在一定程度上可以起到保護(hù)作用,以前沒(méi)有做過(guò)只有在圖片上加水印,分享一下百度的案例;
需要用到的插件
fpdf
fpdi
下面github地址可以在項(xiàng)目中下載這兩個(gè)文件
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);
// 獲取導(dǎo)入頁(yè)面的大小
$size = $pdf->getTemplateSize($templateId);
//創(chuàng)建頁(yè)面(橫向或縱向取決于導(dǎo)入的頁(yè)面大?。?br />
if ($size['w'] > $size['h']) $pdf->AddPage('L', array($size['w'], $size['h']));
else $pdf->AddPage('P', array($size['w'], $size['h']));
// use the imported page
$pdf->useTemplate($templateId);
// 放置圖形
$pdf->image($img, 75, 85, 50);\\img水印圖片,后面的是水印在pdf中坐標(biāo)
}
$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++)
{
// 導(dǎo)入pdf
$templateId = $pdf->importPage($pageNo);
// 獲取pdf的大小
$size = $pdf->getTemplateSize($templateId);
// 創(chuàng)建頁(yè)面(橫向或縱向取決于導(dǎo)入的頁(yè)面大?。?br />
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');//設(shè)置文字的字號(hào)字
$pdf->SetXY(0, 0); // 文字所在位置這個(gè)x,y值,自己調(diào)
$pdf->Write(7, '1111');//寫(xiě)入內(nèi)容大小
}
$pdf->Output('word.pdf');
這樣就可以,原圖效果如下:
導(dǎo)出圖片如下:
如圖達(dá)到了在圖片上加上圖片印章的效果:
下面是加上文字的效果:
感覺(jué)還是加圖片效果更好。而且中文會(huì)亂碼,這個(gè)問(wèn)題沒(méi)有去解決因?yàn)槲抑恍枰訄D片水印,猜想應(yīng)該是頁(yè)面編碼和 arial字體原因。
$pdf->Write(7,'這是水印');//寫(xiě)入內(nèi)容大小
header("Content-type: text/html; charset=utf-8");
定義了頁(yè)面編碼是utf-8 輸出的文字還是亂碼
$pdf->SetFont('宋體','B','12');//設(shè)置文字的字號(hào)字
我嘗試將字體改成中文的最后發(fā)現(xiàn)不支持
暫時(shí)沒(méi)有找到解決方法。
如沒(méi)特殊注明,文章均為方維網(wǎng)絡(luò)原創(chuàng),轉(zhuǎn)載請(qǐng)注明來(lái)自http://m.oulysa.com/news/5818.html