[RESOLU] enregistrer des données dans un pdf

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] enregistrer des données dans un pdf

Re: [RESOLU] enregistrer des données dans un pdf

par Saian » 06 sept. 2022, 10:23

Bien joué !

Re: enregistrer des données dans un pdf

par minwolf999 » 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(); ?>

Re: enregistrer des données dans un pdf

par minwolf999 » 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

Re: enregistrer des données dans un pdf

par Saian » 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.

Re: enregistrer des données dans un pdf

par minwolf999 » 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 ?

Re: enregistrer des données dans un pdf

par Saian » 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

Re: enregistrer des données dans un pdf

par minwolf999 » 04 sept. 2022, 19:22

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

Re: enregistrer des données dans un pdf

par Saian » 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.

Re: enregistrer des données dans un pdf

par minwolf999 » 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
">

Re: enregistrer des données dans un pdf

par Saian » 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.

Re: enregistrer des données dans un pdf

par minwolf999 » 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)

Re: enregistrer des données dans un pdf

par Saian » 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 "/>

Re: enregistrer des données dans un pdf

par minwolf999 » 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

Re: enregistrer des données dans un pdf

par minwolf999 » 04 sept. 2022, 18:55

en gros je t'explique avec des mots plutôt que de te montrer tous le code.
à l'origine on rentre le nom des élèves dans un document txt (où il y a un nom par ligne). Ensuite on va récupérer ligne par ligne avec un $buffer=fgets les prénom qui seront contenu dans le $buffer. Ce $buffer va servir de value à la checkbox qui possède un name 'ps[]'. Cette value va être récupérer lorsque la checkbox va être coché et que l'on va appuyer sur le bouton et le $ps va être créer de cette façon : foreach($_POST['ps'] as $ps) donc je contenue de $buffer sera identique à celui de $ps

Re: enregistrer des données dans un pdf

par Saian » 04 sept. 2022, 18:48

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.'";