mirror of
https://github.com/macintoshplus/doc-fr.git
synced 2026-03-30 21:02:10 +02:00
git-svn-id: https://svn.php.net/repository/phpdoc/fr/trunk@167786 c90b9560-bf6c-de11-be94-00142212c4b1
473 lines
16 KiB
XML
473 lines
16 KiB
XML
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
<!-- $Revision: 1.18 $ -->
|
|
<!-- EN-Revision: 1.16 Maintainer: yannick Status: ready -->
|
|
<reference id="ref.pdf">
|
|
<title>PDF </title>
|
|
<titleabbrev>PDF</titleabbrev>
|
|
|
|
<partintro>
|
|
<section id="pdf.intro">
|
|
&reftitle.intro;
|
|
<simpara>
|
|
Les fonctions PDF permettent de créer des fichiers PDF en utilisant
|
|
la bibliothèque PDFlib créée par <ulink url="&url.pdflib.merz;">Thomas Merz</ulink>.
|
|
</simpara>
|
|
<simpara>
|
|
La documentation de cette section est uniquement destinée à être
|
|
une introduction aux fonctions disponibles, et ne doit pas être
|
|
considérée comme une référence exaustive. Reportez-vous à la
|
|
documentation inclue dans la distribution de PDFlib pour plus
|
|
de détails et d'explications. Elle fournit une excellente
|
|
référence des capacités de PDFlib, et contient la documentation
|
|
la plus à jour.
|
|
</simpara>
|
|
<simpara>
|
|
Toutes les fonctions de la PDFlib et du module &php; ont des noms
|
|
et des arguments identiques. Vous aurez à comprendre quelques
|
|
concepts basiques de PDF et PostScript pour l'utiliser efficacement.
|
|
Toutes les longueurs et coordonnées sont mesurées en points
|
|
PostScript. Il y a généralement 72 points PostScript pour faire
|
|
un pouche (2.54 cm), mais cela dépend de la résolution de sortie.
|
|
Reportez-vous à la documentation PDFlib inclue dans la distribution
|
|
pour plus de détails sur le système de coordonnées.
|
|
</simpara>
|
|
<simpara>
|
|
Notez que la plupart des fonctions PDF requièrent une ressource
|
|
<literal>pdf object</literal> comme premier paramètre. Voyez
|
|
<link linkend="pdf.examples">les exemples</link> ci-dessous pour
|
|
plus de détails.
|
|
</simpara>
|
|
<note>
|
|
<simpara>
|
|
Si vous êtes intéressés par des alternatives gratuites pour
|
|
générer des
|
|
PDF, sans passer par des bibliothèques PDF, voyez <link
|
|
linkend="faq.using.freepdf"> cette entrée de la FAQ</link>.
|
|
</simpara>
|
|
</note>
|
|
</section>
|
|
|
|
<section id="pdf.requirements">
|
|
&reftitle.required;
|
|
<para>
|
|
PDFlib est disponible en téléchargement à
|
|
<ulink url="&url.pdf;">&url.pdf;</ulink>, mais impose l'achat
|
|
d'une license pour l'utiliser commercialement. Les bibliothèques
|
|
<ulink url="&url.jpeg;">JPEG</ulink> et <ulink url="&url.tiff;">TIFF</ulink>
|
|
sont nécessaires pour faire fonctionner cette bibliothèque.
|
|
</para>
|
|
|
|
<section id="pdf.oldlibs.hints">
|
|
<title>Problèmes avec les anciennes versions de PDFlib</title>
|
|
<simpara>
|
|
Toutes les versions de &php; 4 éditées après le 9 Mars 2000
|
|
ne suportent pas les versions de PDFlib plus anciennes que PDFlib 3.0.
|
|
</simpara>
|
|
<simpara>
|
|
PDFlib 3.0 et plus récent est supporté par &php; 3.0.19 et
|
|
plus récent.
|
|
</simpara>
|
|
</section>
|
|
</section>
|
|
|
|
&reference.pdf.configure;
|
|
|
|
<section id="pdf.configuration">
|
|
&reftitle.runtime;
|
|
&no.config;
|
|
</section>
|
|
|
|
<section id="pdf.oldlibs.confusion">
|
|
<title>Confusion entre les vieilles versions de PDFLib</title>
|
|
<simpara>
|
|
Depuis le début du support de PDF sous &php;,
|
|
(commençant avec la version PDFLib 0.6), il y a eu des milliers
|
|
de modifications dans les API de PDFLib. La plupart de ces modifications
|
|
ont été suivies par &php;, et parfois même au prix
|
|
de modifications des API &php;. Depuis la version 3.x, ces API semblent
|
|
s'être stabilisées, et &php; 4 a adoptée cette
|
|
version comme le minimum nécessaire pour supporter PDF.
|
|
En conséquence de quoi, un grand nombre de fonctions vont
|
|
disparaître, ou être remplacées. Le support de
|
|
PDFLib 0.6 est complétement abandonné. La liste suivante
|
|
indique quelles sont les fonctions obsolètes en &php; 4.02, et qui
|
|
devraient être remplacées par de nouvelles versions.
|
|
</simpara>
|
|
<para>
|
|
<table>
|
|
<title>Fonctions obsolètes et leur remplacement</title>
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>Ancienne fonction</entry>
|
|
<entry>Remplacement</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry><function>pdf_put_image</function></entry>
|
|
<entry>Désormais inutile.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><function>pdf_execute_image</function></entry>
|
|
<entry>Désormais inutile.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><function>pdf_get_annotation</function></entry>
|
|
<entry><function>pdf_get_bookmark</function> en utilisant les
|
|
mêmes paramètres.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><function>pdf_get_font</function></entry>
|
|
<entry><function>pdf_get_value</function> en passant
|
|
<literal>"font"</literal> comme second paramètre.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><function>pdf_get_fontsize</function></entry>
|
|
<entry><function>pdf_get_value</function> en passant
|
|
<literal>"fontsize"</literal> comme second paramètre.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><function>pdf_get_fontname</function></entry>
|
|
<entry><function>pdf_get_parameter</function> en passant
|
|
<literal>"fontname"</literal> comme second paramètre.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><function>pdf_set_info_creator</function></entry>
|
|
<entry><function>pdf_set_info</function> en passant
|
|
<literal>"Creator"</literal> comme second paramètre.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><function>pdf_set_info_title</function></entry>
|
|
<entry><function>pdf_set_info</function> en passant
|
|
<literal>"Title"</literal> comme second paramètre.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><function>pdf_set_info_subject</function></entry>
|
|
<entry><function>pdf_set_info</function> en passant
|
|
<literal>"Subject"</literal> comme second paramètre.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><function>pdf_set_info_author</function></entry>
|
|
<entry><function>pdf_set_info</function> en passant
|
|
<literal>"Author"</literal> comme second paramètre.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><function>pdf_set_info_keywords</function></entry>
|
|
<entry><function>pdf_set_info</function> en passant
|
|
<literal>"Keywords"</literal> comme second paramètre.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><function>pdf_set_leading</function></entry>
|
|
<entry><function>pdf_set_value</function> en passant
|
|
<literal>"leading"</literal> comme second paramètre.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><function>pdf_set_text_rendering</function></entry>
|
|
<entry><function>pdf_set_value</function> en passant
|
|
<literal>"textrendering"</literal> comme second paramètre.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><function>pdf_set_text_rise</function></entry>
|
|
<entry><function>pdf_set_value</function> en passant
|
|
<literal>"textrise"</literal> comme second paramètre.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><function>pdf_set_horiz_scaling</function></entry>
|
|
<entry><function>pdf_set_value</function> en passant
|
|
<literal>"horizscaling"</literal> comme second paramètre.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><function>pdf_set_text_matrix</function></entry>
|
|
<entry>Désormais abandonnée.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><function>pdf_set_char_spacing</function></entry>
|
|
<entry><function>pdf_set_value</function> en passant
|
|
<literal>"charspacing"</literal> comme second paramètre.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><function>pdf_set_word_spacing</function></entry>
|
|
<entry><function>pdf_set_value</function> en passant
|
|
<literal>"wordspacing"</literal> comme second paramètre.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><function>pdf_set_transition</function></entry>
|
|
<entry><function>pdf_set_parameter</function> en passant
|
|
<literal>"transition"</literal> comme second paramètre.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><function>pdf_open</function></entry>
|
|
<entry><function>pdf_new</function> suivi d'un appel à
|
|
<function>pdf_open_file</function></entry>
|
|
</row>
|
|
<row>
|
|
<entry><function>pdf_set_font</function></entry>
|
|
<entry><function>pdf_findfont</function> suivi d'un appel à
|
|
<function>pdf_setfont</function></entry>
|
|
</row>
|
|
<row>
|
|
<entry><function>pdf_set_duration</function></entry>
|
|
<entry><function>pdf_set_value</function> en passant
|
|
<literal>"duration"</literal> comme second paramètre.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><function>pdf_open_gif</function></entry>
|
|
<entry><function>pdf_open_image_file</function> en passant
|
|
<literal>"gif"</literal> comme second paramètre.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><function>pdf_open_jpeg</function></entry>
|
|
<entry><function>pdf_open_image_file</function> en passant
|
|
<literal>"jpeg"</literal> comme second paramètre.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><function>pdf_open_tiff</function></entry>
|
|
<entry><function>pdf_open_image_file</function> en passant
|
|
<literal>"tiff"</literal> comme second paramètre.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><function>pdf_open_png</function></entry>
|
|
<entry><function>pdf_open_image_file</function> en passant
|
|
<literal>"png"</literal> comme second paramètre.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><function>pdf_get_image_width</function></entry>
|
|
<entry><function>pdf_get_value</function> en passant
|
|
<literal>"imagewidth"</literal> comme second paramètre et l'image
|
|
en troisième paramètre.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><function>pdf_get_image_height</function></entry>
|
|
<entry><function>pdf_get_value</function> en passant
|
|
<literal>"imageheight"</literal> comme second paramètre et l'image
|
|
en troisième paramètre.</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</para>
|
|
</section>
|
|
|
|
<section id="pdf.examples">
|
|
&reftitle.examples;
|
|
<simpara>
|
|
La plupart des fonctions sont simples d'emploi. Le plus difficile
|
|
est probablement de créer un fichier PDF simple. L'exemple suivant
|
|
devrait vous mettre sur les rails.
|
|
Il crée un fichier <filename>test.pdf</filename> d'une page.
|
|
La page contient du texte "Times Roman outlined", de taille de 30pt.
|
|
Le texte est aussi souligné.
|
|
</simpara>
|
|
<para>
|
|
<example>
|
|
<title>Création d'un document PDF avec PDFlib</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$pdf = pdf_new();
|
|
pdf_open_file($pdf, "test.pdf");
|
|
pdf_set_info($pdf, "Author", "Uwe Steinmann");
|
|
pdf_set_info($pdf, "Title", "Test for PHP wrapper of PDFlib 2.0");
|
|
pdf_set_info($pdf, "Creator", "See Author");
|
|
pdf_set_info($pdf, "Subject", "Testing");
|
|
pdf_begin_page($pdf, 595, 842);
|
|
pdf_add_outline($pdf, "Page 1");
|
|
$font = pdf_findfont($pdf, "Times New Roman", "winansi", 1);
|
|
pdf_setfont($pdf, $font, 10);
|
|
pdf_set_value($pdf, "textrendering", 1);
|
|
pdf_show_xy($pdf, "Times Roman outlined", 50, 750);
|
|
pdf_moveto($pdf, 50, 740);
|
|
pdf_lineto($pdf, 330, 740);
|
|
pdf_stroke($pdf);
|
|
pdf_end_page($pdf);
|
|
pdf_close($pdf);
|
|
pdf_delete($pdf);
|
|
echo '<a href="getpdf.php">terminé</a>';
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
<para>
|
|
Le script <filename>getpdf.php</filename> ne fait que retourner
|
|
le document PDF.
|
|
</para>
|
|
</example>
|
|
<example>
|
|
<title>Affichage d'un PDF précalculé</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$len = filesize($filename);
|
|
header("Content-type: application/pdf");
|
|
header("Content-Length: $len");
|
|
header("Content-Disposition: inline; filename=foo.pdf");
|
|
readfile($filename);
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
La distribution de la PDFlib contient des exemples plus complexes,
|
|
qui créent un page avec une horloge à aiguille. Ici, nous utilisons
|
|
la création de pages en mémoire, pour éviter l'utilisation de
|
|
fichiers temporaires. L'exemple a été adapté à &php;.
|
|
(Cet exemple est disponible dans la documentation
|
|
<link linkend="ref.cpdf">CLibPDF</link>.)
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Exemple pdfclock de PDFlib</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$radius = 200;
|
|
$margin = 20;
|
|
$pagecount = 10;
|
|
|
|
$pdf = pdf_new();
|
|
|
|
if (!pdf_open_file($pdf, "")) {
|
|
echo error;
|
|
exit;
|
|
};
|
|
|
|
pdf_set_parameter($pdf, "warning", "true");
|
|
|
|
pdf_set_info($pdf, "Creator", "pdf_clock.php");
|
|
pdf_set_info($pdf, "Author", "Uwe Steinmann");
|
|
pdf_set_info($pdf, "Title", "Analog Clock");
|
|
|
|
while ($pagecount-- > 0) {
|
|
pdf_begin_page($pdf, 2 * ($radius + $margin), 2 * ($radius + $margin));
|
|
|
|
pdf_set_parameter($pdf, "transition", "wipe");
|
|
pdf_set_value($pdf, "duration", 0.5);
|
|
|
|
pdf_translate($pdf, $radius + $margin, $radius + $margin);
|
|
pdf_save($pdf);
|
|
pdf_setrgbcolor($pdf, 0.0, 0.0, 1.0);
|
|
|
|
/* les marques des minutes */
|
|
pdf_setlinewidth($pdf, 2.0);
|
|
for ($alpha = 0; $alpha < 360; $alpha += 6) {
|
|
pdf_rotate($pdf, 6.0);
|
|
pdf_moveto($pdf, $radius, 0.0);
|
|
pdf_lineto($pdf, $radius-$margin/3, 0.0);
|
|
pdf_stroke($pdf);
|
|
}
|
|
|
|
pdf_restore($pdf);
|
|
pdf_save($pdf);
|
|
|
|
/* les marques des 5 minutes */
|
|
pdf_setlinewidth($pdf, 3.0);
|
|
for ($alpha = 0; $alpha < 360; $alpha += 30) {
|
|
pdf_rotate($pdf, 30.0);
|
|
pdf_moveto($pdf, $radius, 0.0);
|
|
pdf_lineto($pdf, $radius-$margin, 0.0);
|
|
pdf_stroke($pdf);
|
|
}
|
|
|
|
$ltime = getdate();
|
|
|
|
/* l'aiguille des heures */
|
|
pdf_save($pdf);
|
|
pdf_rotate($pdf,-(($ltime['minutes']/60.0)+$ltime['hours']-3.0)*30.0);
|
|
pdf_moveto($pdf, -$radius/10, -$radius/20);
|
|
pdf_lineto($pdf, $radius/2, 0.0);
|
|
pdf_lineto($pdf, -$radius/10, $radius/20);
|
|
pdf_closepath($pdf);
|
|
pdf_fill($pdf);
|
|
pdf_restore($pdf);
|
|
|
|
/* l'aiguille des minutes */
|
|
pdf_save($pdf);
|
|
pdf_rotate($pdf,-(($ltime['seconds']/60.0)+$ltime['minutes']-15.0)*6.0);
|
|
pdf_moveto($pdf, -$radius/10, -$radius/20);
|
|
pdf_lineto($pdf, $radius * 0.8, 0.0);
|
|
pdf_lineto($pdf, -$radius/10, $radius/20);
|
|
pdf_closepath($pdf);
|
|
pdf_fill($pdf);
|
|
pdf_restore($pdf);
|
|
|
|
/* l'aiguille des secondes */
|
|
pdf_setrgbcolor($pdf, 1.0, 0.0, 0.0);
|
|
pdf_setlinewidth($pdf, 2);
|
|
pdf_save($pdf);
|
|
pdf_rotate($pdf, -(($ltime['seconds'] - 15.0) * 6.0));
|
|
pdf_moveto($pdf, -$radius/5, 0.0);
|
|
pdf_lineto($pdf, $radius, 0.0);
|
|
pdf_stroke($pdf);
|
|
pdf_restore($pdf);
|
|
|
|
/* Dessin d'un petit cercle dans le centre */
|
|
pdf_circle($pdf, 0, 0, $radius/30);
|
|
pdf_fill($pdf);
|
|
|
|
pdf_restore($pdf);
|
|
|
|
pdf_end_page($pdf);
|
|
|
|
// pour voir la différence
|
|
sleep(1);
|
|
}
|
|
|
|
pdf_close($pdf);
|
|
|
|
$buf = pdf_get_buffer($pdf);
|
|
$len = strlen($buf);
|
|
|
|
header("Content-type: application/pdf");
|
|
header("Content-Length: $len");
|
|
header("Content-Disposition: inline; filename=foo.pdf");
|
|
echo $buf;
|
|
|
|
pdf_delete($pdf);
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
</section>
|
|
|
|
<section id="pdf.seealso">
|
|
&reftitle.seealso;
|
|
<note>
|
|
<para>
|
|
Une alternative au module module PDFlib est le module
|
|
de <ulink url="&url.cpdf;">FastIO</ulink> : ClibPDF. Voyez la
|
|
section <link linkend="ref.cpdf">ClibPDF</link>
|
|
pour plus de détails. Notez que <link linkend="ref.cpdf">ClibPDF</link>
|
|
disponse d'une API différente de PDFlib.
|
|
</para>
|
|
</note>
|
|
</section>
|
|
|
|
</partintro>
|
|
|
|
&reference.pdf.functions;
|
|
|
|
</reference>
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-omittag:t
|
|
sgml-shorttag:t
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:1
|
|
sgml-indent-data:t
|
|
indent-tabs-mode:nil
|
|
sgml-parent-document:nil
|
|
sgml-default-dtd-file:"../../../manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
|
vim: et tw=78 syn=sgml
|
|
vi: ts=1 sw=1
|
|
-->
|
|
|