Fusion de PDF
Résolu
Bonjour, je voudrais fusionner des fichiers en php en utilisant la librairie fpdf.
Le code marche bien sur un serveur local mais ne marche pas lorsque je le mets en ligne.
voici le code :
EDIT : Correction des balises de code ( ajout du LANGAGE pour avoir la coloration syntaxique et l'indentation )
Explications à lire ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
.
Merci de m'aider
Le code marche bien sur un serveur local mais ne marche pas lorsque je le mets en ligne.
voici le code :
<?php
error_reporting(1);
require_once('fpdf/fpdf.php');
require_once('fpdi/fpdi.php');
$pdf = new FPDI();
ajouteFichier($pdf,"AP0001.pdf");
ajouteFichier($pdf,"AP0002.pdf");
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->SetTextColor(50,50,50);
$pdf->Cell(0,10,'Nouvelle Page Annexe',1,1,'C');
$pdf->Output('nouveau_fichier.pdf','F');
function ajouteFichier($pdf,$file)
{
$nbPage = $pdf->setSourceFile($file);
for ($i = 1; $i <= $nbPage; $i++) {
$tplidx = $pdf->ImportPage($i);
$size = $pdf->getTemplatesize($tplidx);
$pdf->AddPage('P', array($size['w'], $size['h']));
$pdf->useTemplate($tplidx);
}
}
?>
EDIT : Correction des balises de code ( ajout du LANGAGE pour avoir la coloration syntaxique et l'indentation )
Explications à lire ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
.
Merci de m'aider
2 réponses
-
ModérateurBonjour,
Si ton code fonctionne en local.... c'est que le souci ne vient pas de ton code.
As tu des messages d'erreur quand tu lances ton code ?
A minima,
Il faut vérifier que tu as bien tous les fichiers nécessaires sur ton serveur, que toutes les librairies sont bien présentes, que tu as les bons droits d'accès aux fichiers/dossiers.
Il faudrait également regarder les log du serveur pour essayer de trouver la cause de ton souci.
-
Merci de me répondre,
lorsque j'exécute le fichier sur le serveur, je vois apparaitre une page blanche sans message erreur. de plus, je me suis rassuré que les librairies soient bien en place.
Mais toujours pareil-
ModérateurSi tu as une page blanche.. c'est que tu as une erreur 500 ...
Il y a donc un souci dans ton script, certaintement lié aux droit d'accès aux fichiers/dossiers et/ou au chargement des scripts de la lib fpdf
NB: ça pourrait aussi venir d'une version php différente sur ton serveur que celle que tu as en local....
Donc :
1 - Faire un phpinfo() pour vérifier les versions de php entre ton local et ton serveur
2 - Utiliser ce phpinfo pour vérifier que les lib php requises pour faire fonctionner fpdf sont actvées
3 - Vérifier les droits du dossier et des fichiers où se trouvent la lib fpdf et ton script
4 - (qui aurait pu être le 1 en fait.... ) regarder dans les logs d'erreurs du serveur ce qui s'affiche. -
@jordane45Merci de me répondre,
après la modification du code,
include('fpdf/fpdf.php');
include('Fpdi/fpdi.php');
$files = ['AP0001.pdf', 'AP0002.pdf'];
$pdf = new FPDI();
// iterate over array of files and merge
foreach ($files as $file) {
$pageCount = $pdf->setSourceFile($file);
for ($i = 0; $i < $pageCount; $i++) {
$tpl = $pdf->importPage($i + 1, '/MediaBox');
$pdf->addPage();
$pdf->useTemplate($tpl);
}
}
$pdf->Output('merged.pdf','F');
voici l'erreur qui apparait sur le serveur
Fatal error: Uncaught Error: Class 'FPDI' not found in /htdocs/PDFMerger/sample.php:10 Stack trace: #0 {main} thrown in /htdocs/PDFMerger/sample.php on line 10
PHP Version 5.6.3 en local
PHP version 7.3.23 sur le serveur
Qaund je verifie sur phpinfo les lib Zlib et GD sont actives -
Modérateur@gnaouleEt bien.. rien que ça
Fatal error: Uncaught Error: Class 'FPDI' not found
ça devrait te permettre d'avancer.....
Il ne trouve pas la class FPDI .. ce qui semble donc indiquer un souci avec le fichier Fpdi/fpdi.php -
@jordane45Merci beaucoup
ca marche maintenant car j'ai du adapter la version de php du serveur local à celle du serveur web
-