Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Para comprobar si tu servidor remoto -o para comprobar si está activa la modificación del php.ini que te comento a la
izquierda- basta con que abras el famosísimo ficheroinfo.php y compruebes si aparece algo como esto:
Como ves, en este ejemplo PDF support está enabled (que debe ser algo así comoactivado pero escrito
enn raro...), también aparece la versión de la librería y... si aparece eso de CJK Support Font y aparecé lo
de yes... alégrate Jerusalén porque... t ienes elprivilegio de de poder utilizar fuentes de los
idiomas Chino,Japonés y Koreano.
De la opción In Memory PDF Creation Support ya te hablaré más adelante, aunque te anticipo que en la
versión local de PHP 4.2.3 no viene activada por defecto.
Dentro de directorio en el que has instalado PHP hay un subdirectorio que se llamapdf-related y dentro de ese
directorio hay un fichero copyright.txt que te leas con lo cual advertid@ quedas de los aspectos legales de asunto.
Además de ese, hay otro fichero muy importante que es el pdflib.upr donde aparece una lista como esta:
FontAFM
Courier=Courier.afm
Courier-Bold=Courier-Bold.afm
Courier-BoldOblique=Courier-BoldOblique.afm
Courier-Oblique=Courier-Oblique.afm
Helvetica=Helvetica.afm
Helvetica-Bold=Helvetica-Bold.afm
Helvetica-BoldOblique=Helvetica-BoldOblique.afm
Helvetica-Oblique=Helvetica-Oblique.afm
Symbol=Symbol.afm
Times-Bold=Times-Bold.afm
Times-BoldItalic=Times-BoldItalic.afm
Times-Italic=Times-Italic.afm
Times-Roman=Times-Roman.afm
ZapfDingbats=ZapfDingbats.afm
Supongo yo que tendrás instalado en tu ordenata el Adobe Acrobat Reader pero por silas moscas ahí tienes un enlace
de descarga... de nada ;-)
En este enlace tienes una muestra de esas tipografías que te he comentado... que son las que te funcionarán con toda
seguridad.
Te anticipo que es posible utilizar también fuentes TrueType, etc. etc. pero como pareceque no funcionan con todas la
versiones de la librería PDF será mejor que de momentote conformes con estas...
<?
$f = fopen("ejemplo1pdf.pdf", "w");
$g = pdf_open($f);
#dimensionamos la página con formato A-4
pdf_begin_page($g, 595, 842);
pdf_end_page($g);
#dimensionamos la segunda página con formato A-5
pdf_begin_page($g, 421, 595);
pdf_end_page($g);
#dimensionamos la tercera página con formato A-6
pdf_begin_page($g, 297, 421);
pdf_end_page($g);
pdf_close($g);
?>
<A Href="ejemplo1pdf.pdf">Ver el pdf creado</a>
Ejemplo1pdf.pdf
Aquí tienes un ejemplo en el que creamos un documento pdf en el que aparecerá una línea de texto,
pero... fíjate donde aparece... ¿no la encuentras? pues mira bien... mira al final de la página en la esquina
inferior izquierda... ¿por qué? bueno... pues parece que la razón es que pdf_show empieza a colocar el
texto a partir de la coordenada (0,0) y ya sabes que aquí las coordenadas son puramente cartesianas.
<?
$f = fopen("ejemplo2pdf.pdf", "w");
$g = pdf_open($f);
pdf_begin_page($g, 595, 842);
pdf_set_font($g, "Times-Roman", 30,"host", 0 );
pdf_show($g,"Este es el texto");
pdf_end_page($g);
pdf_close($g);
?>
<A Href="ejemplo2pdf.pdf">Ver el pdf creado</a>
Ejemplo2pdf.pdf
PHP dispone de una función que permite desplazar el origen de coordenadas. Su utilización es muy
sencilla, basta escribir -despues de crear la nueva página- está función:
pdf_translate($g, x, y)
La respuesta es sencilla, si hubiera puesto el nuevo origen en 842 -de hecho lo hice y me llevé un buen
susto- lo que ocurre es que empieza a escribir a partir de ese punto, pero hacia arriba y claro, como
ese es el extremo superior de la páginaescribe fuera de ella y... no se ve nada.
Por esa razón dejé el origen un poquito más abajo... para que cupiera en la página...
<?
$f = fopen("ejemplo2bpdf.pdf", "w");
$g = pdf_open($f);
pdf_begin_page($g, 595, 842);
pdf_translate($g, 20, 750);
pdf_set_font($g, "Times-Roman", 30,"host", 0 );
pdf_show($g,"Este es el texto");
pdf_end_page($g);
pdf_close($g);
?>
<A Href="ejemplo2bpdf.pdf">Ver el pdf creado</a>
Ejemplo2bpdf.pdf
Observa como pdf_show va colocando un texto a continuación de otro -siempre en la misma línea- sin
tener en consideración si desborda o no el margen del documento.
<?
$f = fopen("ejemplo2cpdf.pdf", "w");
$g = pdf_open($f);
pdf_begin_page($g, 595, 842);
pdf_translate($g, 20, 750);
pdf_set_font($g, "Times-Roman", 60,"host", 0 );
pdf_show($g,"Este es el texto");
pdf_show($g,"Mas texto");
pdf_continue_text($g,"Una nueva línea");
pdf_show_xy($g,"Esto sale en (40,-300)",40,-400);
pdf_end_page($g);
pdf_close($g);
?>
<A Href="ejemplo2cpdf.pdf">Ver el pdf creado</a>
Ejemplo2cpdf.pdf
• builtin Utiliza una codificación específica aplicable al caso de fuentes de símboloso a otras fuentes
que no pertenecen al alfabeto latino.
Como podrás observar lo práctico y lo cómodo es utilizar la codificación host que sirve para todo con las
excepciones de las fuentes Symbol y ZapfDingbats que por su peculiaridades -alfabeto griego en un caso
y símbolos en el otro- deben utilizar la codificación builtin.
Y por si acaso desconfías de mi que dicho sea de paso sería una opción muy prudente por tu parte, aquí
tienes la prueba de que no te engaño.... ;-).
<?
$f = fopen("ejemplo3pdf.pdf", "w+");
$g = pdf_open($f);
pdf_begin_page($g, 595, 842);
pdf_translate($g, 20, 842);
pdf_set_font($g, "Courier", 20,"host", 0 );
pdf_show_xy($g, "Courier", 0, -40);
pdf_set_font($g, "Courier-Bold", 20,"host", 0 );
pdf_continue_text($g,"Courier-Bold");
pdf_set_font($g, "Courier-BoldOblique", 20,"host", 0 );
pdf_continue_text($g,"Courier-BoldOblique");
pdf_set_font($g, "Courier-Oblique", 20,"host", 0 );
pdf_continue_text($g,"Courier-Oblique");
pdf_set_font($g, "Helvetica", 20,"host", 0 );
pdf_continue_text($g,"Helvetica");
pdf_set_font($g, "Helvetica-Bold", 20,"host", 0 );
pdf_continue_text($g,"Helvetica-Bold");
pdf_set_font($g, "Helvetica-BoldOblique", 20,"host", 0 );
pdf_continue_text($g,"Helvetica-BoldOblique");
pdf_set_font($g, "Helvetica-Oblique", 20,"host", 0 );
pdf_continue_text($g,"Helvetica-Oblique");
pdf_set_font($g, "Times-Bold", 20,"host", 0 );
pdf_continue_text($g,"Times-Bold");
pdf_set_font($g, "Times-BoldItalic", 20,"host", 0 );
pdf_continue_text($g,"Times-BoldItalic");
pdf_set_font($g, "Times-Italic", 20,"host", 0 );
pdf_continue_text($g,"Times-Italic");
pdf_set_font($g, "Times-Roman", 20,"host", 0 );
pdf_continue_text($g,"Times-Roman");
#cuidado con la definición de fuentes Zapfdingbats
pdf_set_font($g, "ZapfDingbats", 20,"builtin", 0 );
pdf_continue_text($g,"ZapfDingbats");
#cuidado con la definición de fuentes Symbol
pdf_set_font($g, "Symbol", 20,"builtin", 0 );
pdf_continue_text($g,"Symbol");
pdf_end_page($g);
pdf_close($g);
?>
<A Href="ejemplo3pdf.pdf">Ver el pdf creado</a>
Ejemplo3pdf.pdf
Supongo yo que con le que te he comentado sobre el manejo de textos no estarás demasiado satisfech@
y tienes toda la razón.... aún no te he dicho nada de como presentar bloques de texto, de como alinearlos,
de como hacer que las letras tengancolorcitos... etc. etc., pero te prometo que si pulsas en el
el botoncito que dice siguientepodrás satisfacer tu curiosidad...
Paciencia, amig@... paciencia... que es virtud cristiana, esta página me está quedandomás larga que un
mes sin pan y como debo rellenar este espacio (cuestiones estéticas) no se me ocurría otra cosa, así que
me he visto obligado a recurrir al socorrido capítulo de consejos... ;-)
Aquí tienes un ejemplo que crea cajas de textos con unas dimensiones determinadas y realiza diferentes
tipos de a alineación horizontal.
<?
$f = fopen("ejemplo4pdf.pdf", "w");
$g = pdf_open($f);
pdf_begin_page($g, 595, 842);
#recogemos en una variable una cadena de texto
$cadena="Este el texto que vamos a insertar dentro de una caja\n";
$cadena .="Añadimos una nueva línea y hemos puesto el ";
$cadena.="caracter especial 'barra invertida n'";
$cadena .=" para señalar el punto y aparte\n";
#recogemos comentarios sobre diferentes alineaciones
$izquierda="Este texto se alineará a la izquierda";
$centro="Esta caja de texto aparecerá centrada";
$derecha="En esta caja aparecerá el texto alineado a la derecha";
$justificado="Esta caja de texto aparecerá justificada";
#establecemos la tipografia
pdf_set_font($g, "Courier", 12,"host", 0 );
#establecemos el color de la letra usando colores RGB
pdf_setcolor($g,"fill","rgb", 1.0, 0, 0);
#imprimimos la caja en la posicion deseada
pdf_show_boxed($g, $cadena.$justificado , 50, 600, 200, 150,
"justify");
#cambiamos el tipo de letra
pdf_set_font($g, "Helvetica", 10,"host", 0 );
#establecemos el nuevo color de la letra usando colores CMYK
pdf_setcolor($g,"fill","cmyk", 1.0, 0, 0, 0);
pdf_show_boxed($g, $cadena.$centro , 300, 600, 200, 150, "center");
pdf_show_boxed($g, $cadena.$derecha , 50, 400, 200, 150, "right");
pdf_set_font($g, "Times-Italic", 10,"host", 0 );
pdf_show_boxed($g, $cadena.$izquierda , 300, 400, 200, 150, "left");
#aumentamos el tamaño de letra y observaremos
#como el texto aparece incompleto porque no cabe en la caja de texto
pdf_set_font($g, "Times-Italic", 20,"host", 0 );
pdf_show_boxed($g, $cadena.$izquierda , 150, 250, 200, 150, "left");
pdf_end_page($g);
pdf_close($g);
?>
<A Href="ejemplo4pdf.pdf">Ver el pdf creado</a>
Ejemplo4pdf.pdf
Si este código no te funciona y te aparece un error es posible que se deba a que la versión de PHP que
estás utilizando sea una versión antigua.
En ese caso, prueba con este otro código en el que he modificado la funciones de color de
relleno sustituyéndolas por su versión más antigua tal como te comento al margen.
<?
$f = fopen("ejemplo4bpdf.pdf", "w");
$g = pdf_open($f);
pdf_begin_page($g, 595, 842);
#recogemos en una variable una cadena de texto
$cadena="Este el texto que vamos a insertar dentro de una caja\n";
$cadena .="Añadimos una nueva línea y hemos puesto ";
$cadena .="el caracter especial 'barra invertida n'";
$cadena .=" para señalar el punto y aparte\n";
#recogemos comentarios sobre diferentes alineaciones
$izquierda="Este texto se alineará a la izquierda";
$centro="Esta caja de texto aparecerá centrada";
$derecha="En esta caja aparecerá el texto alineado a la derecha";
$justificado="Esta caja de texto aparecerá justificada";
#establecemos la tipografia
pdf_set_font($g, "Courier", 12,"host", 0 );
#establecemos el color de la letra usando colores RGB
pdf_setrgbcolor_fill($g, 1.0,0,0);
pdf_show_boxed($g, $cadena.$justificado , 50, 600, 200, 150,
"justify");
pdf_set_font($g, "Helvetica", 10,"host", 0 );
#establecemos el nuevo color de la letra
pdf_setrgbcolor_fill($g,0,1,1);
pdf_show_boxed($g, $cadena.$centro , 300, 600, 200, 150, "center");
pdf_show_boxed($g, $cadena.$derecha , 50, 400, 200, 150, "right");
pdf_set_font($g, "Times-Italic", 10,"host", 0 );
pdf_show_boxed($g, $cadena.$izquierda , 300, 400, 200, 150, "left");
#aumentamos el tamaño de letra y observaremos
#como el texto aparece incompleto porque no cabe en la caja de texto
pdf_set_font($g, "Times-Italic", 20,"host", 0 );
pdf_show_boxed($g, $cadena.$izquierda , 150, 250, 200, 150, "left");
pdf_end_page($g);
pdf_close($g);
?>
<A Href="ejemplo4bpdf.pdf">Ver el pdf creado</a>
Ejemplo4bpdf.pdf
PHP dispone de una función que permite calcular la altura exacta de la caja de textouna vez
especificados: el tipo y tamaño de letra que pretendemos utilizar y el texto que debe contener la caja
mencionada.
Utilizando el viejo truco de hacer un bucle... podemos partir de una altura de caja igual a una línea e irla
incrementando hasta que la función pdf_show_boxed nos devuelvacero como número de carácteres
que no caben en la caja.
¡¡Cuidado...!! En versiones antiguas el valor mínimo que devuelve la
funciónpdf_show_boxed es UNO con lo cual, si en esa situación no midificas el bucle para que se acabe
en uno y no en cero puedes tener un serio problema ya que ...como no llegaría nunca a cero entraría en
un bucle infinito. ¡¡Avisad@ quedas... y además -para que no te falte de nada- aquí debajo tienes los
ejemplos para ambas situaciones. ... de nada... ;-)
<?
$f = fopen("ejemplo5pdf.pdf", "w");
$g = pdf_open($f);
pdf_begin_page($g, 595, 842);
$cadena="Este el texto que vamos a insertar dentro de una caja\n";
$cadena .="Añadimos una nueva línea y escribimos un par de bobadas
más\n";
$cadena .="Se trata de probar que somos capaces de determinar la
altura";
$cadena .=" de una caja de texto\n";
pdf_set_font($g, "Courier", 12,"host", 0 );
#fijamos en interlineado a voluntad
pdf_set_value($g,"leading",20);
#recogemos en la variable interlinea el valor del interlineado
$interlinea = pdf_get_value($g, "leading");
#iniciamos dos variables, alto y sumador con el valor de la interlinea
$alto = $sumador = $interlinea;
#con este bucle vamos modificando la altura de la caja de texto
#hasta que el valor devuelto por pdf_show_boxed sea CERO
Ejemplo5pdf.php
En este otro ejemplo tienes el mismo proceso pero adaptado a las peculiaridades de las
versiones antiguas.
Fíjate que el bucle while acaba ahora en uno, pero además tiene un par de peculiaridades más.
Además de utilizar una función distinta -tal como te comento al margen- para establecer la interlinea, he
tenido que asignar manualmente los valores de la variable$interlinea porque la
función pdf_get_value($g, "leading") parece que no funciona con estas versiones antiguas y claro... a
falta de función... pico y pala...
Al añadir ese parámetro adicional evitamos que el texto se vaya reescribiendo una y otra vez a medida
que se repite el bucle. El parámetro adicional 'blind' impide que seescriba el texto... es por eso que
después de salir del bucle repetimos la funciónpdf_show_boxed para que ahora si lo imprima.
<?
$f = fopen("ejemplo5bpdf.pdf", "w");
$g = pdf_open($f);
pdf_begin_page($g, 595, 842);
$cadena="Este el texto que vamos a insertar dentro de una caja\n";
$cadena .="Añadimos una nueva línea y escribimos un par de bobadas
más\n";
$cadena .="Se trata de probar que somos capaces de determinar la
altura";
$cadena .="de una caja de texto\n";
pdf_set_font($g, "Courier", 12,"host", 0 );
# fijamos en interlineado con la función antigua
pdf_set_leading($g,20);
#establecemos en la variable interlinea el parámeto anterior
#en esta versión tenemos que incluirlo expresamente
$interlinea=20;
#iniciamos dos variables, alto y sumador con el valor de la interlinea
$alto = $sumador = $interlinea;
#con este bucle vamos modificando la altura de la caja de texto
#hasta que el valor devuelto por pdf_show_boxed sea UNO
while(pdf_show_boxed($g, $cadena,0,0,150,$alto,"center",'blind')!=1){
$alto+=$sumador;
}
pdf_show_boxed($g, $cadena , 50, 842-$alto, 200, $alto, "center");
#cambiamos el tipo de letra y la alineación horizontal
pdf_set_font($g, "Times-Roman", 18,"host", 0 );
# establecemos manualmente el valor de la variable interlinea
# el interlineado por defecto es el tamaño de la letra
$interlinea=18;
#restauramos las variables, alto y sumador
#con el valor de la nueva interlinea
$alto = $sumador = $interlinea;
#recalculamos la altura con un bucle similar al anterior
while(pdf_show_boxed($g,$cadena,0,0,250,$alto,"justify",'blind')!=1){
$alto+=$sumador;
}
pdf_show_boxed($g,$cadena,300,842-$alto, 250, $alto, "justify");
pdf_end_page($g);
pdf_close($g);
?>
<A Href="ejemplo5bpdf.pdf">Ver el pdf creado</a>
Ejemplo5bpdf.pdf
Aquí tienes un ejemplo en el que intento mostrarte como jugar con las escalas, centrar textos, invertirlos,
etc. etc. Una monada... pero... como no hay santo sin octava tengo que comentarte algunas cosillas... no
vayas a decir luego que te he engañado... ;-)
Mira... las escalas, aparte de lo que te comento al margen... tienen su cosa... porque una vez aplicadas se
mantienen en el resto del documento salvo que... cuando quieras volver a la escala normal utilices
nuevamente la función escala con los valores inversos.
Y como eso de andar haciendo cuentas no es nada cómodo, y como el mando lo tiene todo previsto (cada
día me sorprende más lo que cuidan el detalles l@s desarrollador@s de PHP) existen dos funciones
tremendamente útiles -al menos a mi me lo parecen- que son save($p) y restore($p) y que sirven para lo
siguiente.
<?
$f = fopen("ejemplo6pdf.pdf", "w");
$g = pdf_open($f);
pdf_begin_page($g, 595, 842);
$cadena="Rincón Astur";
$cadena1="Memorias de un aprendiz";
$cadena2="Asturias si yo pudiera...";
Ejemplo6pdf.pdf
Efectos en el texto
Aquí tienes un ejemplo en el que se crean diferentes efectos de texto utilizando las funciones que te
indico al margen.
<?
$f = fopen("ejemplo7pdf.pdf", "w");
$g = pdf_open($f);
pdf_begin_page($g, 595, 842);
$cadena="Rincón Astur";
$cadena1="Memorias de un aprendiz";
$cadena2="Asturias si yo pudiera...";
pdf_set_font($g, "Helvetica-Bold", 18,"host", 0 );
# activamos el subrayado
pdf_set_parameter($g,"underline","true");
$ancho=pdf_stringwidth($g, $cadena);
pdf_show_xy($g,$cadena,(595-$ancho)/2,800);
# desactivamos el subrayado
pdf_set_parameter($g,"underline","false");
pdf_save($g);
pdf_scale($g, 0.7, 1.4);
# activamos el subrayado y la linea superior
pdf_set_parameter($g,"underline","true");
pdf_set_parameter($g,"overline","true");
$ancho=pdf_stringwidth($g, $cadena1);
pdf_show_xy($g,$cadena1,(595/0.7-$ancho)/2,750/1.4);
# desactivamos el subrayado y la linea superior
pdf_set_parameter($g,"underline","false");
pdf_set_parameter($g,"overline","false");
pdf_restore($g);
pdf_save($g);
pdf_scale($g, 0.75, 1.3);
# activamos el texto "tachado"
pdf_set_parameter($g,"strikeout","true");
pdf_set_font($g, "Times-Bold", 50,"host", 0 );
$ancho=pdf_stringwidth($g, $cadena2);
pdf_show_xy($g,$cadena2,(595/0.75-$ancho)/2,650/1.3);
pdf_restore($g);
# pese al pdf_restore el tachado se mantiene
# hasta que no lo desactivemos
# al salir de la excepcionalidad no restaura los valores anteriores
# de este parámetro
pdf_save($g);
pdf_setrgbcolor_fill($g, 0.7,0.7,0.7);
pdf_scale($g, 0.75, -1.3);
pdf_set_font($g, "Times-Bold", 50,"host", 0 );
$ancho=pdf_stringwidth($g, $cadena2);
pdf_show_xy($g,$cadena2,(595/0.75-$ancho)/2,-620/1.3);
pdf_restore($g);
# desactivamos el texto "tachado"
pdf_set_parameter($g,"strikeout","false");
pdf_set_font($g, "Times-Bold", 30,"host", 0 );
# asignamos colores de relleno y bordes
# las lineas comentadas en magenta están las funciones
# para modificar esos parámetros en versiones modernas
#pdf_setcolor($g,"stroke","rgb", 1, 0, 0);
#pdf_setcolor($g,"fill","rgb", 0, 1, 0);
# asignamos colores de relleno y bordes
# utilizando las funciones válidas para versiones antiguas
# que por el momento también funcionan en las más recientes
pdf_setrgbcolor_stroke($g, 1,0,0);
pdf_setrgbcolor_fill($g, 0,1,0);
Ejemplo7pdf.pdf
Rotando textos
Cautivo y desarmado... (borra lo anterior... borra que eso es otra cosa...) iba a decirte que después del
cuarto y mitad de aspirinas llegué a la siguiente conclusión.
• Situar el origen de coordenadas en el punto donde queremos que aparezca la esquina inferior
izquierda de la caja de texto.
Puede que no sea un procedimiento muy ortodoxo pero funciona... aquí tienes la prueba.. ;-)
<?
$f = fopen("ejemplo8pdf.pdf", "w");
$g = pdf_open($f);
pdf_begin_page($g, 595, 842);
$cadena="Rincón Astur";
pdf_set_font($g, "Helvetica-Bold", 30,"host", 0 );
pdf_set_parameter($g,"underline","true");
$ancho=pdf_stringwidth($g, $cadena);
pdf_show_xy($g,$cadena,(595-$ancho)/2,800);
pdf_set_parameter($g,"underline","false");
# aquí comienza la situación "excepcional"
pdf_save($g);
# transladamos los ejes
pdf_translate($g, 150, 600);
# establecemos la rotacion
pdf_rotate($g,45);
# posicionamos el texto en las coordenadas 0,0
pdf_show_xy($g,$cadena,0,0);
# acabamos "excepcionalidad"
pdf_restore($g);
# con este texto comprobamos que se ha restaurado
# las condiciones anteriores, tanto en cuanto coordenadas como a giro
pdf_show_xy($g,$cadena,(595-$ancho)/2,550);
# repetimos con un angulo negativo
pdf_save($g);
pdf_translate($g, 350, 750);
pdf_rotate($g,-45);
pdf_show_xy($g,$cadena,0,0);
pdf_restore($g);
pdf_end_page($g);
pdf_close($g);
?>
<A Href="ejemplo8pdf.pdf">Ver el pdf creado</a>
Ejemplo8pdf.pdf
Aquí tienes un ejemplo de inserción de imágenes con distintas escalas. Podrás observar que todo lo que
te comenté para rotación de textos es igualmente válido cuando se trata de imágenes
<?
$f = fopen("ejemplo9pdf.pdf", "w");
$g = pdf_open($f);
pdf_begin_page($g, 595, 842);
Ejemplo9pdf.pdf
Distorsionando imágenes
Si observas el código fuente de este ejemplo podrás ver el truco que se puede utilizar para producir
distorsiones en las imágenes aplicando distintos factores de escala horizontal y vertical.
<?
$f = fopen("ejemplo10pdf.pdf", "w");
$g = pdf_open($f);
pdf_begin_page($g, 595, 842);
$imagen1 = pdf_open_jpeg($g, "./images/ejemplo3.jpg");
# establecemos los factores de escala horizontal y vertical
$h=0.5;
$v=0.8;
pdf_save($g);
# obtenemos los valores del ancho y alto de la imagen
$x1 = pdf_get_value($g, "imagewidth", $imagen1);
$y1 = pdf_get_value($g, "imageheight", $imagen1);
# establecemos la escala con los factores definidos
pdf_scale($g,$h,$v);
# posicionamos la imagen centrada horizontalmente y ajustada
# al margen superior. Pura aritmética para el centrado
# Fijate que en pdf_place_image ponemos como
# factor de escala de la imagen el valor UNO
# la modificación la generará el cambio de escala del documento
pdf_place_image($g, $imagen1, ((595/$h-$x1)/2), (842/$v-$y1), 1.0);
pdf_close_image ($g,$imagen1);
pdf_restore($g);
# creamos una nueva excepcionalidad para insertar una imagen
# predefiniendo las dimensiones de visualización
pdf_save($g);
$imagen2 = pdf_open_gif($g, "./images/ejemplo3.gif");
# establecemos el ancho y el alto con el que visualizaremos la imagen
$ancho=150;
$alto=325;
#determinamos el ancho y el alto de la imagen original
$x1 = pdf_get_value($g, "imagewidth", $imagen2);
$y1 = pdf_get_value($g, "imageheight", $imagen2);
# calculamos las escalas horizontal vertical
$h=$ancho/$x1;
$v=$alto/$y1;
# aplicamos la escala dentro del ambito de la excepcionalidad
pdf_scale($g,$h,$v);
# insertamos la imagen con factor de escala igual a 1
pdf_place_image($g, $imagen2, ((595/$h-$x1)/2), 200, 1.0);
pdf_close_image ($g,$imagen2);
pdf_restore($g);
PDF_end_page($g);
pdf_close($g);
?>
<A Href="ejemplo10pdf.pdf">Ver el pdf creado</a>
Ejemplo10pdf.pdf