Files
doc-fr/reference/pdf/reference.xml
Yannick Torres 7a1d9453e9 ajout d'un "-" lorsque nécessaire
git-svn-id: https://svn.php.net/repository/phpdoc/fr/trunk@167786 c90b9560-bf6c-de11-be94-00142212c4b1
2004-09-01 14:55:49 +00:00

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
-->