4 |
david |
1 |
<HTML>
|
|
|
2 |
<HEAD>
|
|
|
3 |
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
|
|
|
4 |
<TITLE>FAQ</TITLE>
|
|
|
5 |
<LINK TYPE="text/css" REL="stylesheet" HREF="fpdf.css">
|
|
|
6 |
</HEAD>
|
|
|
7 |
<BODY>
|
|
|
8 |
<H2>FAQ</H2>
|
|
|
9 |
<B>1.</B> <A HREF='#1'>Quelle est exactement la licence de FPDF ? Y a-t-il des restrictions d'utilisation ?</A><BR>
|
|
|
10 |
<B>2.</B> <A HREF='#2'>Lorsque j'essaie de créer un PDF, plein de caractères bizarres s'affichent à l'écran.</A><BR>
|
|
|
11 |
<B>3.</B> <A HREF='#3'>J'essaie de générer un PDF et IE m'affiche une page blanche. Que se passe-t-il ?</A><BR>
|
|
|
12 |
<B>4.</B> <A HREF='#4'>J'envoie des paramètres en utilisant la méthode POST et les valeurs n'apparaissent pas dans le PDF.</A><BR>
|
|
|
13 |
<B>5.</B> <A HREF='#5'>Lorsque j'utilise une session PHP, IE n'affiche plus mon PDF mais propose de le télécharger.</A><BR>
|
|
|
14 |
<B>6.</B> <A HREF='#6'>Quand je suis en SSL, IE n'arrive pas à ouvrir le PDF.</A><BR>
|
|
|
15 |
<B>7.</B> <A HREF='#7'>Quand j'exécute un script j'obtiens le message "FPDF error: Don't alter the locale before including class file".</A><BR>
|
|
|
16 |
<B>8.</B> <A HREF='#8'>J'essaie de mettre un PNG et Acrobat me dit "Une erreur est survenue lors du traitement d'une page. Une erreur d'affichage est survenue".</A><BR>
|
|
|
17 |
<B>9.</B> <A HREF='#9'>J'essaie de mettre une image et Acrobat me dit "Une erreur est survenue lors du traitement d'une page. Type d'opérande incorrect".</A><BR>
|
|
|
18 |
<B>10.</B> <A HREF='#10'>Je voudrais mettre mon image en taille réelle dans mon PDF. Comment convertir les pixels en mm ?</A><BR>
|
|
|
19 |
<B>11.</B> <A HREF='#11'>J'ai l'erreur suivante quand j'essaie de générer un PDF : Warning: Cannot add header information - headers already sent by (output started at script.php:X)</A><BR>
|
|
|
20 |
<B>12.</B> <A HREF='#12'>J'essaie d'afficher une variable dans la méthode Header mais rien ne s'imprime.</A><BR>
|
|
|
21 |
<B>13.</B> <A HREF='#13'>J'ai défini les méthodes Header et Footer dans ma classe PDF mais rien ne s'affiche.</A><BR>
|
|
|
22 |
<B>14.</B> <A HREF='#14'>Je n'arrive pas à faire de retour à la ligne. J'ai bien mis \n dans la chaîne imprimée par MultiCell mais ça ne marche pas.</A><BR>
|
|
|
23 |
<B>15.</B> <A HREF='#15'>J'essaie de mettre le caractère euro mais je n'y arrive pas.</A><BR>
|
|
|
24 |
<B>16.</B> <A HREF='#16'>Je dessine un cadre avec des dimensions très précises, mais à l'impression je constate des écarts.</A><BR>
|
|
|
25 |
<B>17.</B> <A HREF='#17'>Je voudrais utiliser toute la surface de la page mais à l'impression j'ai toujours des marges. Comment les enlever ?</A><BR>
|
|
|
26 |
<B>18.</B> <A HREF='#18'>Quelle est la taille limite des fichiers que je peux générer avec FPDF ?</A><BR>
|
|
|
27 |
<B>19.</B> <A HREF='#19'>Est-ce que je peux modifier un PDF avec FPDF ?</A><BR>
|
|
|
28 |
<B>20.</B> <A HREF='#20'>Je voudrais faire un moteur de recherche en PHP et indexer des PDF. Est-ce que je peux le faire avec FPDF ?</A><BR>
|
|
|
29 |
<B>21.</B> <A HREF='#21'>Est-ce que je peux transformer une page HTML en PDF avec FPDF ?</A><BR>
|
|
|
30 |
<B>22.</B> <A HREF='#22'>Est-ce que je peux concaténer des PDF avec FPDF ?</A><BR>
|
|
|
31 |
<B>23.</B> <A HREF='#23'>Comment faire pour activer les protections sur un PDF ? Je voudrais empêcher qu'on puisse copier-coller le texte ou modifier le document.</A><BR>
|
|
|
32 |
<BR><BR>
|
|
|
33 |
<A NAME='1'></A><B>1.</B> <FONT CLASS='st'>Quelle est exactement la licence de FPDF ? Y a-t-il des restrictions d'utilisation ?</FONT>
|
|
|
34 |
<P>FPDF est Freeware (c'est indiqué au début du fichier source). Il n'y a pas de restriction
|
|
|
35 |
d'usage. Vous pouvez l'incorporer librement dans votre application (commerciale ou non), avec
|
|
|
36 |
ou sans modification.</P>
|
|
|
37 |
<A NAME='2'></A><B>2.</B> <FONT CLASS='st'>Lorsque j'essaie de créer un PDF, plein de caractères bizarres s'affichent à l'écran.</FONT>
|
|
|
38 |
<P>Ces caractères "bizarres" sont en fait le contenu réel du PDF. Ce comportement est un bug d'IE.
|
|
|
39 |
Lorsqu'il reçoit d'abord une page HTML, puis un PDF à partir de la même URL, il l'affiche
|
|
|
40 |
directement sans lancer le plug-in Acrobat. Cela arrive fréquemment en cours de développement :
|
|
|
41 |
à la moindre erreur de script, une page HTML est envoyée, et après correction, le PDF arrive.
|
|
|
42 |
<BR>
|
|
|
43 |
Pour résoudre le problème, il suffit de fermer IE et de le relancer. On peut aussi aller sur
|
|
|
44 |
une autre URL et revenir.
|
|
|
45 |
<BR>
|
|
|
46 |
Pour éviter ce genre de désagrément durant le développement, on peut générer le PDF directement
|
|
|
47 |
dans un fichier et l'ouvrir via l'explorateur.</P>
|
|
|
48 |
<A NAME='3'></A><B>3.</B> <FONT CLASS='st'>J'essaie de générer un PDF et IE m'affiche une page blanche. Que se passe-t-il ?</FONT>
|
|
|
49 |
<P>Tout d'abord, vérifiez que vous n'envoyez rien au navigateur après le PDF (même pas un espace
|
|
|
50 |
ou un retour-chariot). Vous pouvez mettre un exit juste après l'appel à la méthode Output()
|
|
|
51 |
pour en être sûr.
|
|
|
52 |
<BR>
|
|
|
53 |
Si ce n'est pas ça, c'est que vous êtes victime du syndrome de la "page blanche". IE utilisé
|
|
|
54 |
en conjonction avec le plug-in Acrobat souffre de très nombreux bugs, quelles que soient les
|
|
|
55 |
versions. Essayez de tester votre application avec le plus de versions d'IE possible (en tout cas
|
|
|
56 |
si elle est sur Internet). Le problème survient surtout lorsqu'on utilise la méthode POST, c'est
|
|
|
57 |
pourquoi il est fortement déconseillé de l'utiliser (d'autant qu'elle pose d'autres problèmes,
|
|
|
58 |
voir la question suivante). Le GET marche mieux mais peut échouer lorsque l'URL devient trop
|
|
|
59 |
longue : il ne faut pas dépasser 45 caractères pour la query string. Il existe cependant une
|
|
|
60 |
astuce pour dépasser cette limite : terminer l'URL par .pdf, ce qui trompe IE. Si vous utilisez
|
|
|
61 |
un formulaire, il suffit de rajouter un champ caché en dernière position :
|
|
|
62 |
<BR>
|
|
|
63 |
<BR>
|
|
|
64 |
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
|
|
|
65 |
<TT>
|
|
|
66 |
<INPUT TYPE="HIDDEN" NAME="ext" VALUE=".pdf">
|
|
|
67 |
</TT>
|
|
|
68 |
</TD></TR></TABLE><BR>
|
|
|
69 |
L'utilisation de session PHP cause également souvent des dysfonctionnements (il faut éviter
|
|
|
70 |
d'envoyer des en-têtes HTTP empêchant la mise en cache). Voir la question 5 pour un moyen
|
|
|
71 |
de résoudre le problème.
|
|
|
72 |
<BR>
|
|
|
73 |
<BR>
|
|
|
74 |
Pour éviter tous ces problèmes de manière fiable, il existe deux principales techniques :
|
|
|
75 |
<BR>
|
|
|
76 |
<BR>
|
|
|
77 |
- Désactiver le plug-in et utiliser Acrobat comme application externe. Pour cela, lancez
|
|
|
78 |
Acrobat ; dans le menu Fichier, Préférences, Générales, désactivez l'option "Intégrer au
|
|
|
79 |
navigateur Web" (pour Acrobat 5 : Edition, Préférences, Options, "Afficher dans le navigateur").
|
|
|
80 |
Puis, lorsque vous récupérez un PDF dans IE, ce dernier affiche la boîte "Ouvrir ce fichier" ou
|
|
|
81 |
"Enregistrer ce fichier". Décochez la case "Toujours demander avant d'ouvrir ce type de fichier"
|
|
|
82 |
et choisissez Ouvrir. Dorénavant les PDF s'ouvriront automatiquement dans une fenêtre Acrobat
|
|
|
83 |
indépendante.
|
|
|
84 |
<BR>
|
|
|
85 |
L'inconvénient de la méthode est qu'il faut toucher à la configuration du poste client, ce
|
|
|
86 |
qu'on peut faire en intranet mais pas pour Internet.
|
|
|
87 |
<BR>
|
|
|
88 |
<BR>
|
|
|
89 |
- Utiliser une technique de redirection. Le principe consiste à générer le PDF dans un fichier
|
|
|
90 |
temporaire sur le serveur et à rediriger le client dessus (en utilisant du JavaScript, pas
|
|
|
91 |
l'en-tête HTTP Location qui pose aussi des problèmes). Par exemple, à la fin du script, on
|
|
|
92 |
peut mettre :
|
|
|
93 |
<BR>
|
|
|
94 |
<BR>
|
|
|
95 |
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
|
|
|
96 |
<TT>
|
|
|
97 |
//Détermination d'un nom de fichier temporaire dans le répertoire courant<BR>
|
|
|
98 |
$file=basename(tempnam(getcwd(),'tmp'));<BR>
|
|
|
99 |
//Sauvegarde du PDF dans le fichier<BR>
|
|
|
100 |
$pdf->Output($file);<BR>
|
|
|
101 |
//Redirection JavaScript<BR>
|
|
|
102 |
echo "<HTML><SCRIPT>document.location='getpdf.php?f=$file';</SCRIPT></HTML>";
|
|
|
103 |
</TT>
|
|
|
104 |
</TD></TR></TABLE><BR>
|
|
|
105 |
Puis ceci dans getpdf.php :
|
|
|
106 |
<BR>
|
|
|
107 |
<BR>
|
|
|
108 |
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
|
|
|
109 |
<TT>
|
|
|
110 |
<?php<BR>
|
|
|
111 |
$f=$HTTP_GET_VARS['f'];<BR>
|
|
|
112 |
//Contrôle du fichier (à ne pas oublier !)<BR>
|
|
|
113 |
if(substr($f,0,3)!='tmp' or strpos($f,'/') or strpos($f,'\\'))<BR>
|
|
|
114 |
die("Nom de fichier incorrect");<BR>
|
|
|
115 |
if(!file_exists($f))<BR>
|
|
|
116 |
die("Le fichier n'existe pas");<BR>
|
|
|
117 |
//Traitement de la requête spéciale IE au cas où<BR>
|
|
|
118 |
if($HTTP_SERVER_VARS['HTTP_USER_AGENT']=='contype')<BR>
|
|
|
119 |
{<BR>
|
|
|
120 |
Header('Content-Type: application/pdf');<BR>
|
|
|
121 |
exit;<BR>
|
|
|
122 |
}<BR>
|
|
|
123 |
//Envoi du PDF<BR>
|
|
|
124 |
Header('Content-Type: application/pdf');<BR>
|
|
|
125 |
Header('Content-Length: '.filesize($f));<BR>
|
|
|
126 |
readfile($f);<BR>
|
|
|
127 |
//Suppression du fichier<BR>
|
|
|
128 |
unlink($f);<BR>
|
|
|
129 |
exit;<BR>
|
|
|
130 |
?>
|
|
|
131 |
</TT>
|
|
|
132 |
</TD></TR></TABLE><BR>
|
|
|
133 |
Cette méthode fonctionne dans la plupart des cas, mais pose encore des problèmes avec IE6. La
|
|
|
134 |
méthode "ultime" consiste à rediriger directement sur le fichier temporaire. Ce dernier doit
|
|
|
135 |
donc avoir l'extension .pdf :
|
|
|
136 |
<BR>
|
|
|
137 |
<BR>
|
|
|
138 |
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
|
|
|
139 |
<TT>
|
|
|
140 |
//Détermination d'un nom de fichier temporaire dans le répertoire courant<BR>
|
|
|
141 |
$file=basename(tempnam(getcwd(),'tmp'));<BR>
|
|
|
142 |
rename($file,$file.'.pdf');<BR>
|
|
|
143 |
$file.='.pdf';<BR>
|
|
|
144 |
//Sauvegarde du PDF dans le fichier<BR>
|
|
|
145 |
$pdf->Output($file);<BR>
|
|
|
146 |
//Redirection JavaScript<BR>
|
|
|
147 |
echo "<HTML><SCRIPT>document.location='$file';</SCRIPT></HTML>";
|
|
|
148 |
</TT>
|
|
|
149 |
</TD></TR></TABLE><BR>
|
|
|
150 |
Cette méthode transforme un PDF dynamique en PDF statique et évite ainsi tous les ennuis.
|
|
|
151 |
Par contre, il faut prévoir une procédure de nettoyage pour effacer les fichiers temporaires.
|
|
|
152 |
Par exemple :
|
|
|
153 |
<BR>
|
|
|
154 |
<BR>
|
|
|
155 |
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
|
|
|
156 |
<TT>
|
|
|
157 |
function CleanFiles($dir)<BR>
|
|
|
158 |
{<BR>
|
|
|
159 |
//Efface les fichiers temporaires<BR>
|
|
|
160 |
$t=time();<BR>
|
|
|
161 |
$h=opendir($dir);<BR>
|
|
|
162 |
while($file=readdir($h))<BR>
|
|
|
163 |
{<BR>
|
|
|
164 |
if(substr($file,0,3)=='tmp' and substr($file,-4)=='.pdf')<BR>
|
|
|
165 |
{<BR>
|
|
|
166 |
$path=$dir.'/'.$file;<BR>
|
|
|
167 |
if($t-filemtime($path)>3600)<BR>
|
|
|
168 |
@unlink($path);<BR>
|
|
|
169 |
}<BR>
|
|
|
170 |
}<BR>
|
|
|
171 |
closedir($h);<BR>
|
|
|
172 |
}
|
|
|
173 |
</TT>
|
|
|
174 |
</TD></TR></TABLE><BR>
|
|
|
175 |
Cette fonction efface tous les fichiers de la forme tmp*.pdf dans le répertoire spécifié qui
|
|
|
176 |
datent de plus d'une heure. Vous pouvez l'appeler où vous voulez, par exemple dans le script
|
|
|
177 |
qui génère le PDF.
|
|
|
178 |
<BR>
|
|
|
179 |
<BR>
|
|
|
180 |
Remarque : il est nécessaire d'ouvrir une nouvelle fenêtre pour le PDF, car on ne peut plus
|
|
|
181 |
revenir en arrière à cause de la redirection.</P>
|
|
|
182 |
<A NAME='4'></A><B>4.</B> <FONT CLASS='st'>J'envoie des paramètres en utilisant la méthode POST et les valeurs n'apparaissent pas dans le PDF.</FONT>
|
|
|
183 |
<P>C'est un problème qui affecte certaines versions d'IE (en particulier la première 5.5). Voir la
|
|
|
184 |
question précédente pour les moyens de le contourner.</P>
|
|
|
185 |
<A NAME='5'></A><B>5.</B> <FONT CLASS='st'>Lorsque j'utilise une session PHP, IE n'affiche plus mon PDF mais propose de le télécharger.</FONT>
|
|
|
186 |
<P>C'est un problème qui affecte certaines versions d'IE. Pour le contourner, ajoutez la ligne
|
|
|
187 |
suivante avant session_start() :<BR>
|
|
|
188 |
<BR>
|
|
|
189 |
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
|
|
|
190 |
<TT>
|
|
|
191 |
session_cache_limiter('private');
|
|
|
192 |
</TT>
|
|
|
193 |
</TD></TR></TABLE><BR>
|
|
|
194 |
ou bien faites une redirection comme expliqué à la question 3.</P>
|
|
|
195 |
<A NAME='6'></A><B>6.</B> <FONT CLASS='st'>Quand je suis en SSL, IE n'arrive pas à ouvrir le PDF.</FONT>
|
|
|
196 |
<P>Le problème peut être résolu en ajoutant cette ligne :<BR>
|
|
|
197 |
<BR>
|
|
|
198 |
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
|
|
|
199 |
<TT>
|
|
|
200 |
Header('Pragma: public');
|
|
|
201 |
</TT>
|
|
|
202 |
</TD></TR></TABLE><BR>
|
|
|
203 |
</P>
|
|
|
204 |
<A NAME='7'></A><B>7.</B> <FONT CLASS='st'>Quand j'exécute un script j'obtiens le message "FPDF error: Don't alter the locale before including class file".</FONT>
|
|
|
205 |
<P>Lorsqu'on configure le séparateur décimal comme virgule avant d'inclure un fichier, il y a un
|
|
|
206 |
<A HREF="http://bugs.php.net/bug.php?id=17105" TARGET="_blank">bug</A> dans PHP et les nombres
|
|
|
207 |
décimaux sont tronqués. Il ne faut donc pas faire d'appel à setlocale() avant d'inclure la
|
|
|
208 |
classe. Sous Unix, il ne faut pas non plus définir la variable d'environnement LC_ALL, car cela
|
|
|
209 |
est équivalent à faire un appel à setlocale().</P>
|
|
|
210 |
<A NAME='8'></A><B>8.</B> <FONT CLASS='st'>J'essaie de mettre un PNG et Acrobat me dit "Une erreur est survenue lors du traitement d'une page. Une erreur d'affichage est survenue".</FONT>
|
|
|
211 |
<P>Acrobat 5 a un bug et ne peut pas afficher les images transparentes monochromes (i.e. avec 1 bit par pixel).
|
|
|
212 |
Enlevez la transparence ou passez votre image en 16 couleurs (4 bits par pixel) ou plus.</P>
|
|
|
213 |
<A NAME='9'></A><B>9.</B> <FONT CLASS='st'>J'essaie de mettre une image et Acrobat me dit "Une erreur est survenue lors du traitement d'une page. Type d'opérande incorrect".</FONT>
|
|
|
214 |
<P>Il faut donner au moins une dimension à l'image ; la hauteur et la largeur ne peuvent être nulles
|
|
|
215 |
en même temps.</P>
|
|
|
216 |
<A NAME='10'></A><B>10.</B> <FONT CLASS='st'>Je voudrais mettre mon image en taille réelle dans mon PDF. Comment convertir les pixels en mm ?</FONT>
|
|
|
217 |
<P>Une image n'a pas de "taille réelle". La dimension qu'on lui donne dans le document est
|
|
|
218 |
arbitraire. A moins que vous ne vouliez imposer une résolution particulière (par exemple 72 dpi,
|
|
|
219 |
ce qui correspond à l'affichage sur un écran), auquel cas le rapport entre la taille en pixels et
|
|
|
220 |
la résolution donne la longueur.</P>
|
|
|
221 |
<A NAME='11'></A><B>11.</B> <FONT CLASS='st'>J'ai l'erreur suivante quand j'essaie de générer un PDF : Warning: Cannot add header information - headers already sent by (output started at script.php:X)</FONT>
|
|
|
222 |
<P>Il ne faut rien envoyer d'autre au navigateur que le PDF lui-même : pas d'HTML, pas d'espace, pas
|
|
|
223 |
de retour-chariot, ni avant ni après. Le script envoie quelque chose à la ligne X.</P>
|
|
|
224 |
<A NAME='12'></A><B>12.</B> <FONT CLASS='st'>J'essaie d'afficher une variable dans la méthode Header mais rien ne s'imprime.</FONT>
|
|
|
225 |
<P>Il faut utiliser le mot-clé <TT>global</TT>, par exemple :
|
|
|
226 |
<BR>
|
|
|
227 |
<BR>
|
|
|
228 |
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
|
|
|
229 |
<TT>
|
|
|
230 |
function Header()<BR>
|
|
|
231 |
{<BR>
|
|
|
232 |
global $titre;<BR>
|
|
|
233 |
<BR>
|
|
|
234 |
$this->SetFont('Arial','B',15);<BR>
|
|
|
235 |
$this->Cell(0,10,$titre,1,1,'C');<BR>
|
|
|
236 |
}
|
|
|
237 |
</TT>
|
|
|
238 |
</TD></TR></TABLE><BR>
|
|
|
239 |
</P>
|
|
|
240 |
<A NAME='13'></A><B>13.</B> <FONT CLASS='st'>J'ai défini les méthodes Header et Footer dans ma classe PDF mais rien ne s'affiche.</FONT>
|
|
|
241 |
<P>Il faut créer un objet de la classe PDF et non pas FPDF :<BR>
|
|
|
242 |
<BR>
|
|
|
243 |
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
|
|
|
244 |
<TT>
|
|
|
245 |
$pdf=new PDF();
|
|
|
246 |
</TT>
|
|
|
247 |
</TD></TR></TABLE><BR>
|
|
|
248 |
</P>
|
|
|
249 |
<A NAME='14'></A><B>14.</B> <FONT CLASS='st'>Je n'arrive pas à faire de retour à la ligne. J'ai bien mis \n dans la chaîne imprimée par MultiCell mais ça ne marche pas.</FONT>
|
|
|
250 |
<P>Il faut mettre la chaîne entre guillemets et non pas entre apostrophes.</P>
|
|
|
251 |
<A NAME='15'></A><B>15.</B> <FONT CLASS='st'>J'essaie de mettre le caractère euro mais je n'y arrive pas.</FONT>
|
|
|
252 |
<P>Pour les polices standard, le caractère euro a pour code 128. Vous pouvez par commodité définir
|
|
|
253 |
une constante comme suit :
|
|
|
254 |
<BR>
|
|
|
255 |
<BR>
|
|
|
256 |
<TABLE WIDTH="100%" BGCOLOR="#E0E0E0"><TR><TD>
|
|
|
257 |
<TT>
|
|
|
258 |
define('EURO',chr(128));
|
|
|
259 |
</TT>
|
|
|
260 |
</TD></TR></TABLE><BR>
|
|
|
261 |
Note : Acrobat 4 ou supérieur est requis pour afficher l'euro.</P>
|
|
|
262 |
<A NAME='16'></A><B>16.</B> <FONT CLASS='st'>Je dessine un cadre avec des dimensions très précises, mais à l'impression je constate des écarts.</FONT>
|
|
|
263 |
<P>Pour respecter les dimensions, il faut décocher la case "Ajuster" dans la boîte de dialogue
|
|
|
264 |
d'impression.</P>
|
|
|
265 |
<A NAME='17'></A><B>17.</B> <FONT CLASS='st'>Je voudrais utiliser toute la surface de la page mais à l'impression j'ai toujours des marges. Comment les enlever ?</FONT>
|
|
|
266 |
<P>Les imprimantes ont toutes des marges physiques (variables en fonction du modèle), il est donc
|
|
|
267 |
impossible de les supprimer et d'imprimer sur la totalité de la page.</P>
|
|
|
268 |
<A NAME='18'></A><B>18.</B> <FONT CLASS='st'>Quelle est la taille limite des fichiers que je peux générer avec FPDF ?</FONT>
|
|
|
269 |
<P>Il n'y a pas de limite particulière. Il existe cependant certaines contraintes :
|
|
|
270 |
<BR>
|
|
|
271 |
<BR>
|
|
|
272 |
- La taille mémoire allouée par défaut aux scripts PHP est de 8 Mo. Pour de très gros
|
|
|
273 |
documents, en particulier avec des images, cette limite peut être atteinte (le fichier étant
|
|
|
274 |
construit en mémoire). Elle est paramétrée dans php.ini.
|
|
|
275 |
<BR>
|
|
|
276 |
<BR>
|
|
|
277 |
- Le temps d'exécution alloué par défaut est de 30 secondes. Cette limite peut bien entendu
|
|
|
278 |
être facilement dépassée. Elle est paramétrée dans php.ini et peut être éventuellement modifiée
|
|
|
279 |
à l'exécution par set_time_limit().
|
|
|
280 |
<BR>
|
|
|
281 |
<BR>
|
|
|
282 |
- Les navigateurs ont généralement un time-out de 5 minutes. Si vous envoyez le PDF directement
|
|
|
283 |
au navigateur et que vous dépassez cette limite, il sera perdu. Il est donc conseillé pour les
|
|
|
284 |
très gros documents de les générer dans un fichier, et d'envoyer des données de temps en temps
|
|
|
285 |
au navigateur (par exemple page 1, page 2... en utilisant flush() pour forcer l'envoi).
|
|
|
286 |
Lorsque le fichier est terminé, vous pouvez effectuer une redirection dessus avec JavaScript
|
|
|
287 |
ou bien créer un lien.
|
|
|
288 |
<BR>
|
|
|
289 |
Remarque : même lorsque le navigateur part en time-out, il est possible que le script continue
|
|
|
290 |
à s'exécuter sur le serveur.</P>
|
|
|
291 |
<A NAME='19'></A><B>19.</B> <FONT CLASS='st'>Est-ce que je peux modifier un PDF avec FPDF ?</FONT>
|
|
|
292 |
<P>Non.</P>
|
|
|
293 |
<A NAME='20'></A><B>20.</B> <FONT CLASS='st'>Je voudrais faire un moteur de recherche en PHP et indexer des PDF. Est-ce que je peux le faire avec FPDF ?</FONT>
|
|
|
294 |
<P>Non. Par contre il existe un utilitaire GPL en C, pdftotext, capable d'extraire le contenu
|
|
|
295 |
textuel d'un PDF. Il est fourni avec l'archive de Xpdf :<BR>
|
|
|
296 |
<BR>
|
|
|
297 |
<A HREF="http://www.foolabs.com/xpdf/" TARGET="_blank">http://www.foolabs.com/xpdf/</A></P>
|
|
|
298 |
<A NAME='21'></A><B>21.</B> <FONT CLASS='st'>Est-ce que je peux transformer une page HTML en PDF avec FPDF ?</FONT>
|
|
|
299 |
<P>Non, on ne peut convertir que de l'HTML très simple, pas des pages complètes. Par contre il
|
|
|
300 |
existe un utilitaire GPL en C, htmldoc, qui permet de le faire et qui donne de bons résultats :<BR>
|
|
|
301 |
<BR>
|
|
|
302 |
<A HREF="http://www.easysw.com/htmldoc/" TARGET="_blank">http://www.easysw.com/htmldoc/</A></P>
|
|
|
303 |
<A NAME='22'></A><B>22.</B> <FONT CLASS='st'>Est-ce que je peux concaténer des PDF avec FPDF ?</FONT>
|
|
|
304 |
<P>Non. Par contre il existe un utilitaire gratuit en C, mbtPdfAsm, capable de le faire :<BR>
|
|
|
305 |
<BR>
|
|
|
306 |
<A HREF="http://thierry.schmit.free.fr/dev/mbtPdfAsm/mbtPdfAsm2.html" TARGET="_blank">http://thierry.schmit.free.fr/dev/mbtPdfAsm/mbtPdfAsm2.html</A></P>
|
|
|
307 |
<A NAME='23'></A><B>23.</B> <FONT CLASS='st'>Comment faire pour activer les protections sur un PDF ? Je voudrais empêcher qu'on puisse copier-coller le texte ou modifier le document.</FONT>
|
|
|
308 |
<P>On ne peut pas actuellement. La fonctionnalité sera implémentée à l'avenir.</P>
|
|
|
309 |
</BODY>
|
|
|
310 |
</HTML>
|