Files
doc-fr/reference/pdf/reference.xml
T
Damien Seguy 8d477eba69 spring commit
git-svn-id: https://svn.php.net/repository/phpdoc/fr/trunk@129857 c90b9560-bf6c-de11-be94-00142212c4b1
2003-06-02 15:49:40 +00:00

459 lines
16 KiB
XML

<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.4 $ -->
<reference id="ref.pdf">
<title>PDF </title>
<titleabbrev>PDF</titleabbrev>
<partintro>
<section id="pdf.intro">
&reftitle.intro;
<simpara>
Les fonctions PDF permettent de cr&eacute;er des fichiers PDF en utilisant
la librairie PDFlib cr&eacute;&eacute;e par <ulink url="&url.pdflib.merz;">Thomas Merz</ulink>.
</simpara>
<simpara>
La documentation de cette section est uniquement destin&eacute;e &agrave; &ecirc;tre
une introduction aux fonctions disponibles, et ne doit pas &ecirc;tre
consid&eacute;r&eacute;e comme une r&eacute;f&eacute;rence exaustive. Reportez vous &agrave; la
documentation inclue dans la distribution de PDFlib pour plus
de d&eacute;tails et d'explications. Elle fournit une excellente
r&eacute;f&eacute;rence des capacit&eacute;s de PDFlib, et contient la documentation
la plus &agrave; jour.
</simpara>
<simpara>
Toutes les fonctions de la PDFlib et du module PHP ont des noms
et des arguments identiques. Vous aurez &agrave; comprendre quelques
concepts basiques de PDF et PostScript pour l'utiliser efficacement.
Toutes les longueurs et coordonn&eacute;es sont mesur&eacute;es en points
PostScript. Il y a g&eacute;n&eacute;ralement 72 points PostScript pour faire
un pouche (2.54 cm), mais cela d&eacute;pend de la r&eacute;solution de sortie.
Reportez vous &agrave; la documentation PDFlib inclue dans la distribution
pour plus de d&eacute;tails sur le syst&egrave;me de coordonn&eacute;es.
</simpara>
<simpara>
Notez que la plus part des fonctions PDF requiert une ressource
<literal>pdf object</literal> comme premier param&egrave;tre. Voyez
<link linkend="pdf.examples">les exemples</link> ci-dessous pour
plus de d&eacute;tails.
</simpara>
</section>
<section id="pdf.requirements">
&reftitle.required;
<para>
PDFlib est disponible en t&eacute;l&eacute;chargement &agrave;
<ulink url="&url.pdf;">&url.pdf;</ulink>, mais impose l'achat
d'une license pour l'utiliser commercialement. Les librairies
<ulink url="&url.jpeg;">JPEG</ulink> et <ulink url="&url.tiff;">TIFF</ulink>
sont n&eacute;cessaires pour faire fonctionner cette librairie.
</para>
<section id="pdf.oldlibs.hints">
<title>Probl&egrave;mes avec les anciennes versions de PDFlib</title>
<simpara>
Toutes les versions des PHP 4 &eacute;dit&eacute;es apr&egrave;s le 9 Mars 2000
ne suportent pas les versions de PDFlib plus anciennes que PDFlib 3.0.
</simpara>
<simpara>
PDFlib 3.0 est plus r&eacute;cent est support&eacute; par PHP 3.0.19 et
plus r&eacute;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&eacute;but du support de PDF sous PHP,
(commen&ccedil;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 &eacute;t&eacute; suivies par PHP, et parfois m&ecirc;me au prix
de modifications des API PHP. Depuis la version 3.x, ces API semblent
s'&ecirc;tre stabilis&eacute;es, et PHP 4 a adopt&eacute;e cette
version comme le minimum n&eacute;cessaire pour supporter PDF.
En cons&eacute;quence de quoi, un grand nombre de fonction vont
dispara&icirc;tre, ou &ecirc;tre remplac&eacute;e. Le support de
PDFLib 0.6 est compl&eacute;tement abandonn&eacute;. La liste suivante
indique quelles sont les fonctions obsol&egrave;tes en PHP 4.02, et qui
devraient &ecirc;tre remplac&eacute;es par de nouvelles versions.
</simpara>
<para>
<table>
<title>Fonctions obsol&egrave;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&eacute;sormais inutile.</entry>
</row>
<row>
<entry><function>pdf_execute_image</function></entry>
<entry>D&eacute;sormais inutile.</entry>
</row>
<row>
<entry><function>pdf_get_annotation</function></entry>
<entry><function>pdf_get_bookmark</function> en utilisant les m&ecirc;mes param&egrave;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&egrave;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&egrave;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&egrave;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&egrave;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&egrave;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&egrave;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&egrave;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&egrave;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&egrave;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&egrave;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&egrave;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&egrave;tre.</entry>
</row>
<row>
<entry><function>pdf_set_text_matrix</function></entry>
<entry>D&eacute;sormais abandonn&eacute;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&egrave;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&egrave;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&egrave;tre.</entry>
</row>
<row>
<entry><function>pdf_open</function></entry>
<entry><function>pdf_new</function> suivi d'un appel &agrave;
<function>pdf_open_file</function></entry>
</row>
<row>
<entry><function>pdf_set_font</function></entry>
<entry><function>pdf_findfont</function> suivi d'un appel &agrave;
<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&egrave;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&egrave;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&egrave;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&egrave;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&egrave;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&egrave;tre and the image
as the third parameter.</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&egrave;tre and the
image as the third parameter.</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&eacute;er un fichier PDF simple. L'exemple suivant
devrait vous mettre sur les rails.
Il cr&eacute;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&eacute;.
</simpara>
<para>
<example>
<title>Creation d'un document PDF avec PDFlib</title>
<programlisting>
<![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");
pdf_set_font($pdf, "Times-Roman", 30, "host");
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&eacute;</A>";
?>
]]>
</programlisting>
<simpara>
The script <filename>getpdf.php</filename> just returns the pdf document.
</simpara>
<informalexample>
<programlisting>
<![CDATA[
<?php
$len = filesize($filename);
header("Content-type: application/pdf");
header("Content-Length: $len");
header("Content-Disposition: inline; filename=foo.pdf");
readfile($filename);
?>
]]>
</programlisting>
</informalexample>
</example>
</para>
<para>
La distribution de la PDFlib contient des exemples plus complexes,
qui cr&eacute;ent un page avec une horloge &agrave; aiguille. Ici, nous utilisons
la cr&eacute;ation de pages en m&eacute;moire, pour &eacute;viter l'utilisation de
fichiers temporaires. L'exemple a &eacute;t&eacute; adapt&eacute; &agrave; PHP.
(Cet exemple est disponible dans la documentation
<link linkend="ref.cpdf">CLibPDF</link>.)
</para>
<para>
<example>
<title>Exemple pdfclock de PDFlib</title>
<programlisting>
<![CDATA[
<?php
$radius = 200;
$margin = 20;
$pagecount = 10;
$pdf = pdf_new();
if (!pdf_open_file($pdf, "")) {
print 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&eacute;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");
print $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&eacute;tails. Notez que <link linkend="ref.cpdf">ClibPDF</link>
disponse d'une API diff&eacute;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
-->