[RESOLU] enregistrer des données dans un pdf

Eléphant du PHP | 89 Messages

04 sept. 2022, 18:59

Yes bah voilà le \r\n doit venir de $buffer.

Tu lis un fichier txt ligne par ligne et quand tu récupères une ligne le \r\n de fin de ligne est également retourné.

Tu dois donc le retirer à ce niveau la.
echo '<input type="checkbox" name="ps[]" value="'.str_replace("\r\n", '', $buffer).'" />'.$buffer ."<br><br>";
Attention tu as un ; inutile ici value="'.$buffer.'";
Je viens de modifier et en effet le \r\n a disparu mais à laisser un espace qui doit être à l'origine du reste du beug:
Warning: file_put_contents(./grdbd .pdf): failed to open stream: No such file or directory

Avatar du membre
Mammouth du PHP | 1609 Messages

04 sept. 2022, 19:04

Tu ne devrais logiquement pas avoir un espace à la place à moins que tu en ais mis un dans le replacement du str_replace.

Vérifie avec le navigateur le code source de la page avec les checkbox pour t'assurer qu'il n'y a aucun espace ou autre dans les value.

Le code doit être comme ça
<input type="checkbox" name="ps[]" value="rgdbd"/>
pas comme ça
<input type="checkbox" name="ps[]" value="rgdbd
"/>
ou comme ça
<input type="checkbox" name="ps[]" value="rgdbd "/>
Développeur web depuis + de 20 ans

Eléphant du PHP | 89 Messages

04 sept. 2022, 19:08

Je viens de vérifier le code source avec le navigateur et la value de la checkbox possède bien un espace qui n'est pas dans le document txt mais je me dis est ce que le '' ne metterais pas un espace ?
str_replace("\r\n", '', $buffer)

Avatar du membre
Mammouth du PHP | 1609 Messages

04 sept. 2022, 19:12

Non la chaine vide délimitée par deux apostrophes ne met rien à la place du \r\n. C'est autre chose... c'est vraiment un espace dans le code html ou c'est un retour à la ligne ?

PS : tu peux tenter d'ajouter un trim autour du str_replace mais ça fonctionnera pas si c'est une sorte de caractère spéciale.
Développeur web depuis + de 20 ans

Eléphant du PHP | 89 Messages

04 sept. 2022, 19:16

Ah autant pour moi lorsque l'on regarde dans le navigateur ça apparait comme un espace mais lorsque l'on en fait un copier coller ça devient un retour à la ligne !
(voilà le copier coller que j'obtiens)
<input type="checkbox" name="ps[]" value="grdbd
">

Avatar du membre
Mammouth du PHP | 1609 Messages

04 sept. 2022, 19:19

Ok tu peux tester un str_replace comme ça
str_replace(["\r\n", "\r", "\n"], '', $buffer)
Ça serait sensé supprimer toutes les formes de nouvelle ligne.
Développeur web depuis + de 20 ans

Eléphant du PHP | 89 Messages

04 sept. 2022, 19:22

c'est bon ça marche !!!!
Merci beaucoup pour ton aide

Avatar du membre
Mammouth du PHP | 1609 Messages

04 sept. 2022, 19:24

Ok super. Sinon à priori juste un trim devrait suffir, je viens de m'en apercevoir en regardant la doc.

https://www.php.net/manual/fr/function.trim.php
trim(string $string, string $characters = " \n\r\t\v\x00"): string
Développeur web depuis + de 20 ans

Eléphant du PHP | 89 Messages

04 sept. 2022, 19:26

Merci beaucoup d'ailleurs je pose ça là comme ça reste dans le thème.
Lorsque je vais réécrire dans le document pdf je voudrais garder ce qu'il y avait marquer dedans et non pas écrire par dessus comment fait on ?

Avatar du membre
Mammouth du PHP | 1609 Messages

04 sept. 2022, 19:32

FPDF ne permet pas de le faire, il faut voir si une autre librairie le permet ou réécrire l'intégralité du pdf à chaque fois.
Développeur web depuis + de 20 ans

Eléphant du PHP | 89 Messages

04 sept. 2022, 19:47

FPDF ne permet pas de le faire, il faut voir si une autre librairie le permet ou réécrire l'intégralité du pdf à chaque fois.
En récupérant le contenue du dossier pdf avec un file_get_content ce n'est pas faisable ?
faire quelque chose de ce style :
$atexte = file_get_contents("./appreciation/"$ps".pdf");
$btexte= $atexte .$competence ;
(pour le moment quand je fais ça ça affiche ceci dans le document pdf:
%PDF-1.33 0 obj</Type /Page/Parent 1 0 R/Resources 2 0 R/Contents 4 0 R>>endobj4 0 obj<</Filter /FlateDecode

Eléphant du PHP | 89 Messages

05 sept. 2022, 19:56

J'ai réussi à trouver comment faire : il faut pour cela utiliser la bibliothèque FPDI et utiliser ce code permet de récupérer ce que contenais le pdf ciblé

Code : Tout sélectionner

<?php use \setasign\Fpdi\Fpdi; require_once('fdpf/fpdf.php'); require_once('FPDI-2.3.6/src/autoload.php'); // initiate FPDI $pdf = new Fpdi(); // add a page $pdf->AddPage(); // set the source file $pdf->setSourceFile(".../appreciation/$ps.pdf"); // import page 1 $tplIdx = $pdf->importPage(1); // use the imported page and place it at point 10,10 with a width of 100 mm $pdf->useImportedPage($tplIdx,); $pdf->Output(); ?>

Avatar du membre
Mammouth du PHP | 1609 Messages

06 sept. 2022, 10:23

Bien joué !
Développeur web depuis + de 20 ans