Les solutions pour les missions de mon école ont tous des waterstamps sur les PDF avec notre nom d'utilisateur sur celui-ci. P>
Je me demandais si vous savez comment faire quelque chose comme ça en utilisant php? Exécutent-ils un script avant le processus de téléchargement? P>
merci. p>
4 Réponses :
Il existe une excellente bibliothèque PHP OpenSource http://www.tcpdf.org/ , je l'utilise pour toutes les tâches génératrices de PDF. p>
Bien qu'il y ait plusieurs très bons Libs PDF pour PHP, si j'écris un tel programme, je déboutitais simplement à courir PDFTK Mais vous devez toujours générer votre filigrane.
$tempfile=tempnam(); system("pdftk input_file.pdf background watermark.pdf output $tempfile dont_ask", $errcode); if (!$errcode && $ih=fopen($tempfile, 'r')) { header('Content-Type: application/pdf'); fpassthru($ih); fclose($ih); } else { print "Whoops"; } unlink($tempfile);
Nécessaire pour le faire hier et voici comment sans aucune libs externe non PHP qui doit être installée. Les seules libres que 2 libres nécessaires sont à la fois des libs PHP et sont faciles à obtenir.
Vous pouvez maintenant utiliser la classe ci-dessous pour atteindre le filigrane P> Vous pouvez maintenant exécuter ceci comme suit: p>
J'ai utilisé cela et obtenez toutes les pages affichant sur la première page. J'ai pu résoudre ce problème en ajoutant $ ceci-> pdf-> addpage (); code> à la fin de la boucle dans
dowatermark () code>. J'ai fait d'autres changements mineurs, donc je ne suis pas confiant de modifier votre réponse, mais cela peut aider si d'autres ont ce problème.
J'ai corrigé ce code en réponse à cette question
Merci pour le code. Quelques petites choses que j'ai trouvées jusqu'à présent en gardant cela d'être plug-n-jeu. La commande "Exécuter cette" commande a besoin de deux arguments: Watermark :: Applkandspit ($ FileWithbithfullPath, $ newfilenamewithfu llpath); et la classe utilise = &, qui est obsolète dans PHP actuel, il suffit d'utiliser =.
Voici les étapes que j'ai essayées avec le marquage de l'eau à l'aide de FPDI:
<?php use setasign\Fpdi\Fpdi; use setasign\Fpdi\PdfReader; function PlaceWatermark($file, $text, $xxx, $yyy, $op, $outdir) { require_once('fpdi/vendor/autoload.php'); require_once 'fpdi/vendor/setasign/fpdf/fpdf.php'; function copyTransparent($src, $output) { $dimensions = getimagesize($src); $x = $dimensions[0]; $y = $dimensions[1]; $im = imagecreatetruecolor($x,$y); $src_ = imagecreatefrompng($src); // Prepare alpha channel for transparent background $alpha_channel = imagecolorallocatealpha($im, 255, 255, 255, 127); imagecolortransparent($im, $alpha_channel); // Fill image imagefill($im, 0, 0, $alpha_channel); // Copy from other imagecopy($im,$src_, 0, 0, 0, 0, $x, $y); // Save transparency imagesavealpha($im,true); // Save PNG imagepng($im,$output,9); imagedestroy($im); } $png = 'https://www.office-deals.nl/images/logo_60x37.png'; copyTransparent($png,"png.png"); $imageURL = 'png.png'; $imgWidth = 20; $pdf = new FPDI(); if (file_exists("./".$file)){ $pagecount = $pdf->setSourceFile($file); } else { return FALSE; } for($i=1; $i <= $pagecount; $i++) { $tpl = $pdf->importPage($i); $pdf->addPage(); $pdf->useTemplate($tpl, 5, 5); $pdf->Image($imageURL, $xxx, $yyy,'png'); } if ($outdir === TRUE){ return $pdf->Output($file,'I'); } else { return $pdf->Output(); } } $images='https://www.office-deals.nl/images/logo_60x37.png'; PlaceWatermark("laravel.pdf", $images, 180, 275, 100,TRUE); ?>
Leur script Downloader attrape probablement votre nom d'utilisateur, crée une image de base et utilise la bibliothèque
pdf_php code> pour calquer cette image en haut du PDF.
Comment générez-vous (ou planifiez-vous) les PDF? Si vous n'avez pas encore rien fait, consultez WebKit vers PDF: code.google.com/ p / wkhtmltopdf