พอดีว่าผมกำลังหา Code ที่ใช้ Insert text watermark ลงบนไฟล์ PDF ที่ Upload เข้ามา ซึ่งตอนนี้ก็เจอแล้วแต่ปรากฏว่า พอลองใช้งานมันดันโดนรูปทับ และผมก็ได้พยายามหาวิธีแก้ด้วยตัวเองแล้ว แต่ยังไม่พบวิธีแก้ จึงอยากจะขอความรู้พี่ๆ ช่วยแนะนำหน่อยครับว่าผมจะแก้ปัญหานี้อย่างไรดีครับ
ไฟล์ที่ใช้รัน watermark-edit-existing-pdf
<?php
//This page contains edit the existing file by using fpdi.
require(dirname(__DIR__ ) . '/vendor/WatermarkPDF/WatermarkPDF.php');
# ==========================
$pdfFile = dirname(__DIR__ ) . "/Powerpoint2010.pdf";
$watermarkText = "Chinmay Kumar Sahu";
$pdf = new WatermarkPDF($pdfFile, $watermarkText);
//$pdf = new FPDI();
$pdf->AddPage();
$pdf->SetFont('Arial', '', 12);
/*$txt = "FPDF is a PHP class which allows to generate PDF files with pure PHP, that is to say " .
"without using the PDFlib library. F from FPDF stands for Free: you may use it for any " .
"kind of usage and modify it to suit your needs.\n\n";
for ($i = 0; $i < 25; $i++) {
$pdf->MultiCell(0, 5, $txt, 0, 'J');
}*/
if($pdf->numPages>1) {
for($i=2;$i<=$pdf->numPages;$i++) {
//$pdf->endPage();
$pdf->_tplIdx = $pdf->importPage($i);
$pdf->AddPage();
}
}
$pdf->Output(); //If you Leave blank then it should take default "I" i.e. Browser
//$pdf->Output("sampleUpdated.pdf", 'D'); //Download the file. open dialogue window in browser to save, not open with PDF browser viewer
//$pdf->Output("save_to_directory_path.pdf", 'F'); //save to a local file with the name given by filename (may include a path)
//$pdf->Output("sampleUpdated.pdf", 'I'); //I for "inline" to send the PDF to the browser
//$pdf->Output("", 'S'); //return the document as a string. filename is ignored.
?>
ไฟล์ที่ใช้ Config ครับ WatermarkPDF.php
<?php
require(dirname(__DIR__) .'/fpdf/fpdf.php');
require_once dirname(__DIR__) .'/FPDI/fpdi.php';
class WatermarkPDF extends FPDI {
public $_tplIdx;
public $angle = 0;
public $fullPathToFile;
public $rotatedText = 'Muvi Entertainment Pvt. Ltd.';
function __construct($fullPathToFile, $rotate_text) {
$this->fullPathToFile = $fullPathToFile;
if ($rotate_text)
$this->rotatedText = $rotate_text;
parent::__construct();
}
function Rotate($angle, $x = -1, $y = -1) {
if ($x == -1)
$x = $this->x;
if ($y == -1)
$y = $this->y;
if ($this->angle != 0)
$this->_out('Q');
$this->angle = $angle;
if ($angle != 0) {
$angle *= M_PI / 180;
$c = cos($angle);
$s = sin($angle);
$cx = $x * $this->k;
$cy = ($this->h - $y) * $this->k;
$this->_out(sprintf('q %.5F %.5F %.5F %.5F %.2F %.2F cm 1 0 0 1 %.2F %.2F cm', $c, $s, -$s, $c, $cx, $cy, -$cx, -$cy));
}
}
function _endpage() {
if ($this->angle != 0) {
$this->angle = 0;
$this->_out('Q');
}
parent::_endpage();
}
function Header() {
//Put the watermark
//$this->Image('http://chart.googleapis.com/chart?cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World', 40, 100, 100, 0, 'PNG');
$this->SetFont('Arial', 'B', 50);
$this->SetTextColor(255, 192, 203);
$this->RotatedText(20, 230, $this->rotatedText, 45);
if ($this->fullPathToFile) {
if (is_null($this->_tplIdx)) {
// THIS IS WHERE YOU GET THE NUMBER OF PAGES
$this->numPages = $this->setSourceFile($this->fullPathToFile);
$this->_tplIdx = $this->importPage(1);
}
$this->useTemplate($this->_tplIdx, 0, 0, 200);
}
}
function RotatedText($x, $y, $txt, $angle) {
//Text rotated around its origin
$this->Rotate($angle, $x, $y);
$this->Text($x, $y, $txt);
$this->Rotate(0);
}
}
<?php
require_once('fpdf/fpdf.php');
require_once('fpdi/fpdi.php');
class PDF_Rotate extends FPDI
{
var $angle=0;
function Rotate($angle,$x=-1,$y=-1)
{
if($x==-1)
$x=$this->x;
if($y==-1)
$y=$this->y;
if($this->angle!=0)
$this->_out('Q');
$this->angle=$angle;
if($angle!=0)
{
$angle*=M_PI/180;
$c=cos($angle);
$s=sin($angle);
$cx=$x*$this->k;
$cy=($this->h-$y)*$this->k;
$this->_out(sprintf('q %.5F %.5F %.5F %.5F %.2F %.2F cm 1 0 0 1 %.2F %.2F cm',$c,$s,-$s,$c,$cx,$cy,-$cx,-$cy));
}
}
function _endpage()
{
if($this->angle!=0)
{
$this->angle=0;
$this->_out('Q');
}
parent::_endpage();
}
function RotatedText($x,$y,$txt,$angle)
{
//Text rotated around its origin
$this->Rotate($angle,$x,$y);
$this->Text($x,$y,$txt);
$this->Rotate(0);
}
}
?>
pdf.php
<?php
require_once('rotation.php');
// initiate FPDI
$pdf = new PDF_Rotate();
// get the page count
$pageCount = $pdf->setSourceFile('Powerpoint2010.pdf');
// iterate through all pages
for ($pageNo = 1; $pageNo <= $pageCount; $pageNo++) {
// import a page
$templateId = $pdf->importPage($pageNo);
// get the size of the imported page
$size = $pdf->getTemplateSize($templateId);
// create a page (landscape or portrait depending on the imported page size)
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->SetFont('Helvetica','B',50);
$pdf->SetTextColor(207, 207, 207);
$pdf->SetXY(170, 200);
$pdf->RotatedText(60, 200,'Document Control', 45);
// $pdf->Write(8, 'A complete document imported with FPDI');
}
// Output the new PDF
$pdf->Output();
?>