[RESOLU] Ligne sur PDF fusionnés

Bonjour à tous,

Actuellement en phase de développement d’un module sous Dolibarr 5.0.1, j’ai besoin pour ce module de fusionner 2 PDF (générés par Dolibarr ou non)
Je me retrouve confronté à un problème après la fusion de ces 2 fichiers car il apparaît 1 ligne en haut de chaque page comme le montre le screenshot joint.

Je ne vois pas ou du moins ne trouve pas comment supprimer cette ligne sur chaque page.

Quelqu’un aurait une idée?

Pour plus de précision voici le code utilisé.

test.php

// Load Dolibarr environment
if (false === (@include '../../main.inc.php')) {  // From htdocs directory
	require '../../../main.inc.php'; // From "custom" directory
}

// Libraries
require_once DOL_DOCUMENT_ROOT . '/core/lib/pdf.lib.php';
require_once '../functions.lib.php';

$pdf_dir 	= DOL_DOCUMENT_ROOT . "/uploads/";

$exportfile = $pdf_dir . "doc.pdf";
$pdffile1 	= $pdf_dir . "pdffile1.pdf";
$pdffile2 	= $pdf_dir . "pdffile2.pdf";

/***  define some files to concatenate ****/
$files = array(
	$pdffile1,
	$pdffile2
);

if (!MergeFiles($files,$exportfile,$obj) ) {
	$error 	= 1;
	$msg 	= "Erreur";
}

functions.lib.php

function MergeFiles($files,$exportfile)
{
			
	$error = 0; // Error counter
	
	$pdf = pdf_getInstance();

	$cpt_page = 0;
	
	// iterate through the files
	foreach ($files AS $file) {

		// get the page count
		$pageCount = $pdf->setSourceFile($file);
		// 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', 'A4');
				// $pdf->AddPage('L', array($size['w'], $size['h']));
			} else {
				$pdf->AddPage('P', 'A4');
				// $pdf->AddPage('P', array($size['w'], $size['h']));
			}

			// use the imported page
			$pdf->useTemplate($templateId,null,null,0,0,true);
		}
	}

	// Output the new PDF
	$pdf->Output();

	return $error;

	
}

Merci pour votre aide.

Mat

Pièces jointes :

Personne pour m’aider ? :unhappy:

Bonjour à tous,

J’ai fini par trouvé la solution à force de recherche (Google is my friend)
Le problème vient de la librairie FPDI qui intègre automatiquement un header et un footer dans son template et affiche une ligne par défaut.

Pour palier au problème, il faut ajouter les lignes de code suivantes juste après la déclaration de l’objet PDF (FDPF ou TCPDF selon le cas)

	$pdf->setPrintHeader(false);
	$pdf->setPrintFooter(false);

On a alors dans mon exemple au niveau du fonction.lib.php

function MergeFiles($files,$exportfile)
{
			
	$error = 0; // Error counter
	
	$pdf = pdf_getInstance();

	$pdf->setPrintHeader(false);
	$pdf->setPrintFooter(false);
	
	// iterate through the files
	foreach ($files AS $file) {

		// get the page count
		$pageCount = $pdf->setSourceFile($file);
		// 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', 'A4');
				// $pdf->AddPage('L', array($size['w'], $size['h']));
			} else {
				$pdf->AddPage('P', 'A4');
				// $pdf->AddPage('P', array($size['w'], $size['h']));
			}

			// use the imported page
			$pdf->useTemplate($templateId,null,null,0,0,true);
		}
	}

	// Output the new PDF
	$pdf->Output();

	return $error;

	
}

Source : https://stackoverflow.com/questions/10523472/fpdi-merge-pdf-files-strange-line-appears

En espérant que cela puisse aider quelqu’un si nécessaire :happy:

Mat

Bonsoir
Merci pour ton retour.
Je n’ai pas ce souci de ligne avec mon module rubis qui fusionné avec mes cgv ni les fiches produits.
Vérifie ta méthode, il doit y avoir une astuce.
@+

Bonjour philazery et merci de ta proposition.

J’ai pensé à un pb dans la méthode également, mais en mettant en place un petit script php hors Dolibarr, j’ai pu me rendre compte que c’est la lib FPDI qui faisait défaut et non ma méthode. D’où la solution apportée.

Dans ton cas avec Rubis, j’avais justement vérifié pour comparer par reverse engineering, cependant, de mémoire, la différence est que ton PDF final est généré à la volée à la création des documents commerciaux. De mon coté, je génère un PDF avec 2 fichiers déjà créés et existants.
Mais je me trompe peut être sur Rubis, ma mémoire n’est plus ce qu’elle était à mes 20 balais :side: :tongue:

L’essentiel est que j’ai pu trouvé solution à mon problème qui m’handicapait dans la poursuite des mon projet :happy:

@+

Mat