Subversion Repositories Sites.tela-botanica.org

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
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
&lt;INPUT TYPE=&quot;HIDDEN&quot; NAME=&quot;ext&quot; VALUE=&quot;.pdf&quot;&gt;
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&eacute;termination d'un nom de fichier temporaire dans le r&eacute;pertoire courant<BR>
98
$file=basename(tempnam(getcwd(),'tmp'));<BR>
99
//Sauvegarde du PDF dans le fichier<BR>
100
$pdf-&gt;Output($file);<BR>
101
//Redirection JavaScript<BR>
102
echo &quot;&lt;HTML&gt;&lt;SCRIPT&gt;document.location='getpdf.php?f=$file';&lt;/SCRIPT&gt;&lt;/HTML&gt;&quot;;
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
&lt;?php<BR>
111
$f=$HTTP_GET_VARS['f'];<BR>
112
//Contr&ocirc;le du fichier (&agrave; ne pas oublier !)<BR>
113
if(substr($f,0,3)!='tmp' or strpos($f,'/') or strpos($f,'\\'))<BR>
114
&nbsp;&nbsp;&nbsp;&nbsp;die(&quot;Nom de fichier incorrect&quot;);<BR>
115
if(!file_exists($f))<BR>
116
&nbsp;&nbsp;&nbsp;&nbsp;die(&quot;Le fichier n'existe pas&quot;);<BR>
117
//Traitement de la requ&ecirc;te sp&eacute;ciale IE au cas o&ugrave;<BR>
118
if($HTTP_SERVER_VARS['HTTP_USER_AGENT']=='contype')<BR>
119
{<BR>
120
&nbsp;&nbsp;&nbsp;&nbsp;Header('Content-Type: application/pdf');<BR>
121
&nbsp;&nbsp;&nbsp;&nbsp;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
?&gt;
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&eacute;termination d'un nom de fichier temporaire dans le r&eacute;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-&gt;Output($file);<BR>
146
//Redirection JavaScript<BR>
147
echo &quot;&lt;HTML&gt;&lt;SCRIPT&gt;document.location='$file';&lt;/SCRIPT&gt;&lt;/HTML&gt;&quot;;
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
&nbsp;&nbsp;&nbsp;&nbsp;//Efface les fichiers temporaires<BR>
160
&nbsp;&nbsp;&nbsp;&nbsp;$t=time();<BR>
161
&nbsp;&nbsp;&nbsp;&nbsp;$h=opendir($dir);<BR>
162
&nbsp;&nbsp;&nbsp;&nbsp;while($file=readdir($h))<BR>
163
&nbsp;&nbsp;&nbsp;&nbsp;{<BR>
164
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(substr($file,0,3)=='tmp' and substr($file,-4)=='.pdf')<BR>
165
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>
166
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$path=$dir.'/'.$file;<BR>
167
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($t-filemtime($path)&gt;3600)<BR>
168
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@unlink($path);<BR>
169
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
170
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
171
&nbsp;&nbsp;&nbsp;&nbsp;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
&nbsp;&nbsp;&nbsp;&nbsp;global $titre;<BR>
233
<BR>
234
&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;SetFont('Arial','B',15);<BR>
235
&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;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>