Estoy haciendo en script en Perl que me genera un PDF a partir de otro, el problema que tengo es que cuando quiero abrir una hoja especifica del documento me manda un error; ya le intenté de varias maneras para solucionar el problema y nada; aquí pongo parte del código y el error que me manda.
Using perl Syntax Highlighting
$pdf = PDF::API2->open("/var/www/html/formatos/formatoprincipal/formato.pdf");
$fnt = $pdf->corefont('Arial-Bold',-encoding => 'latin1');
$fnt2 = $pdf->corefont('Arial',-encoding => 'latin1');
%font = (
Arial => {
Bold => $pdf->corefont('Arial-Bold', -encoding => 'latin1'),
},
Times => {
Roman => $pdf->corefont('Arial', -encoding => 'latin1'),
},
);
page = $pdf->openpage(1);
$left_column_text = $page->text;
$left_column_text->font( $font{'Arial'}{'Bold'}, 11/pt );
$left_column_text->fillcolor( 'black' );
# funcion que me permite justificar el texto
$parrafo= "$$rs{texto}";
$ypos=245/mm;
($endw, $ypos, $paragraph) = text_block(
$left_column_text, # PAGINA ACTIVA
$parrafo, # TEXTO A IMPRIMIR
-x => 20/mm, # COLUMNA
-y => $ypos, # LINEA
-w => 171/mm, # ANCHO DEL BLOQUE
-h => 110/mm - (119/mm - $ypos), # ALTO DEL BLOQUE
-lead => 13/pt, # ESPACIO ENTRE LINEAS.
-parspace => 0/pt,
-align => 'justify',
);
$txt = $page->text;
$txt->font($fnt, 11);
$txt->translate(538,735); $txt->text_right("No. de Formato: $$rs{formato}");
$txt->translate(250,550); $txt->text("DECLARACIONES");
$txt->font($fnt2, 11);
$txt->translate(62,490); $txt->text("a)");
#aqui abro otra pagina sin problemas
$page = $pdf->openpage(3);
$txt = $page->text;
$txt->font($fnt2, 11);
$txt->fillcolor('black');
$txt->translate(62,610); $txt->text("$texto2");
#hasta aqui todo funciona correctamente, pero cuando quiero abrir otra pagina por ejemplo la pagina 2 es cuando me manda el error.
$page = $pdf->openpage(2);
$txt = $page->text;
$txt->translate(538,735); $txt->text_right("INCISOS DEL FORMATO");
$pdf->saveas("/var/www/html/formatos/generados/formto1.pdf");
$fnt = $pdf->corefont('Arial-Bold',-encoding => 'latin1');
$fnt2 = $pdf->corefont('Arial',-encoding => 'latin1');
%font = (
Arial => {
Bold => $pdf->corefont('Arial-Bold', -encoding => 'latin1'),
},
Times => {
Roman => $pdf->corefont('Arial', -encoding => 'latin1'),
},
);
page = $pdf->openpage(1);
$left_column_text = $page->text;
$left_column_text->font( $font{'Arial'}{'Bold'}, 11/pt );
$left_column_text->fillcolor( 'black' );
# funcion que me permite justificar el texto
$parrafo= "$$rs{texto}";
$ypos=245/mm;
($endw, $ypos, $paragraph) = text_block(
$left_column_text, # PAGINA ACTIVA
$parrafo, # TEXTO A IMPRIMIR
-x => 20/mm, # COLUMNA
-y => $ypos, # LINEA
-w => 171/mm, # ANCHO DEL BLOQUE
-h => 110/mm - (119/mm - $ypos), # ALTO DEL BLOQUE
-lead => 13/pt, # ESPACIO ENTRE LINEAS.
-parspace => 0/pt,
-align => 'justify',
);
$txt = $page->text;
$txt->font($fnt, 11);
$txt->translate(538,735); $txt->text_right("No. de Formato: $$rs{formato}");
$txt->translate(250,550); $txt->text("DECLARACIONES");
$txt->font($fnt2, 11);
$txt->translate(62,490); $txt->text("a)");
#aqui abro otra pagina sin problemas
$page = $pdf->openpage(3);
$txt = $page->text;
$txt->font($fnt2, 11);
$txt->fillcolor('black');
$txt->translate(62,610); $txt->text("$texto2");
#hasta aqui todo funciona correctamente, pero cuando quiero abrir otra pagina por ejemplo la pagina 2 es cuando me manda el error.
$page = $pdf->openpage(2);
$txt = $page->text;
$txt->translate(538,735); $txt->text_right("INCISOS DEL FORMATO");
$pdf->saveas("/var/www/html/formatos/generados/formto1.pdf");
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
Aquí pongo el error que me manda.
- Código: Seleccionar todo
ContratoFirco.cgi: Can't call method "width" on an undefined value at /usr/lib/perl5/site_perl/5.8.8/PDF/API2/Content.pm line 1695.
Espero y puedan ayudarme a resolver este problema.