Re: problem creating an pdf fileincluding a image stored in mysql database
Sebastian Reinhardt <[email protected]> Sat, 17 Apr 2010 01:31:29 +0200
| Newsgroups | gmane.comp.db.mysql.perl |
|---|---|
| Message-ID | <[email protected]> |
Am 17.04.2010 01:03, schrieb Selke, Gisbert W.: >> -----Ursprüngliche Nachricht----- >> Von: Sebastian Reinhardt [mailto:[email protected]] >> Gesendet: Samstag, 17. April 2010 00:57 >> -------------------------- >> my $img = >> $pdf->image('/cgi-bin/load_image.pl?dbase='.$dbase.'&dtable='. >> $dtable.'&refnr='.$ref_nr.'&dcol=Bild0'); >> $page->image('image'=>$img, 'yalign' => 1, >> 'xscale'=>1.00,'yscale'=>1.00, 'xpos'=>100,'ypos'=>500); >> -------------------------- >> >> If I try to create the pdf, it fails. Did anyone know why? >> > Es wäre hilfreich zu wissen, wie die Fehlermeldung lautet, von welchem Programmteil sie kommt, welches Modul dein $pdf-Objekt erzeugt, ggf. was da load_image.pl macht, und wie. "it fails" ist nicht sehr aussagekräftig. > > \Gisbert > > Hallo, Danke für die Antwort. Die Fehlermeldung habe ich nicht, da sich das ganze Script "aufhängt" bzw. mit 100% CPU-Last endlos weiterläuft. Zum Script "load_image.pl": ----------------load_image.pl------------------------ #!/bin/perl use CGI qw(:standard); use CGI::Carp qw(fatalsToBrowser); use DBI; use POSIX; use URI::Escape; use Encode::Guess; use utf8; use 5.010; print header(-type=>'text/html; charset=utf-8'); my $dbase = param('dbase'); my $dtable = param('dtable'); my $ref_nr = param('refnr'); my $dcol = param('dcol'); my $host = 'localhost'; my $user_ro = 'user'; my $passwd_ro = 'password'; my %attributes = {'RaiseError'=>1,'PrintError'=>1}; my $datasource="DBI:mysql:database=$dbase;host=$host"; $dbh = DBI->connect($datasource,$user_ro,$passwd_ro,%atrributes); my $sql = qq{select $dcol from $dtable where Ref_nr=$ref_nr}; my $sth = $dbh->prepare( $sql ); $sth->execute(); while(@ergebnis=$sth->fetchrow_array) { print $ergebnis[0]; } $sth->finish(); $dbh->disconnect(); exit 0; ----------------load_image.pl------------------------ Das ist "nur" ein Hilfsscript, das ich auch für eine kleine Dia- Show verwende, in der man durch die Bilder schalten kann. Das klappt wunderbar. Das Erzeugen des pdf's mit den Informationen zu dem Eintrag aus den Textspalten der MySQL- DB klappt auch. ----------------generate_pdf.pl------------------------ #!/usr/bin/perl use CGI qw(:standard); use CGI::Carp qw(fatalsToBrowser); use CGI qw(-utf8); use DBI; use POSIX; use URI::Escape; use Encode::Guess; use utf8; use 5.010; use PDF::Create; # # my $dbase = CGI::param('dbase'); my $dtable = CGI::param('dtable'); my $ref_nr = CGI::param('refnr'); my $dcol = CGI::param('dcol'); my $pdf_string = CGI::param('pdf_string'); my $bild_max = CGI::param('bild_max'); my $host = 'localhost'; my $user_ro = 'mysql_ro'; my $passwd_ro = 'mysql'; my %attributes = {'RaiseError'=>1,'PrintError'=>1}; my $datasource="DBI:mysql:database=$dbase;host=$host"; # # Variablen # my %pdf_string_hash; my @pdf_string_keys; # # # PDF Datei erzeugen # my $file_name = '../tmp/'; $file_name .= $ref_nr; $file_name .= '.pdf'; # print "file_name:",$file_name; print CGI::header( -type => 'application/x-pdf'); #, -attachment => $file_name ); my $pdf = new PDF::Create('filename' => $file_name, 'Version' => 1.2, 'PageMode' => 'UseOutlines', 'Author' => 'LMV Landmschinenvertrieb- und Service GmbH\nHauptstrasse 13\nHartmannsdorf-Reichenau\n01762\nGermany', 'Title' => 'LMV Landmschinenvertrieb- und Service GmbH\nHauptstrasse 13\nHartmannsdorf-Reichenau\n01762\nGermany\n http://www.lmv-hartmannsdorf.de', ); my $root = $pdf->new_page('MediaBox' => [ 0, 0, 612, 792 ]); # neue Seite erzeugen my $page = $root->new_page; # Fonts my $f1 = $pdf->font('Subtype' => 'Type1', 'Encoding' => 'WinAnsiEncoding', 'BaseFont' => 'Helvetica'); my $f2 = $pdf->font('Subtype' => 'Type1', 'Encoding' => 'WinAnsiEncoding', 'BaseFont' => 'Helvetica-Bold'); my $font_LMV = $pdf->font('Subtype' => 'Type1', 'Encoding' => 'WinAnsiEncoding', 'BaseFont' => 'Times-Bold'); my $font_LMV1 = $pdf->font('Subtype' => 'Type1', 'Encoding' => 'WinAnsiEncoding', 'BaseFont' => 'Times-Italic'); ....................................... (Text in pdf schreiben, das schenken wir uns mal) ...................... # Bild laden # if ( defined($bild_max) && $bild_max gt 0 ) { $page->stringl($f1, 20, 90, 500-$i*20, "Bild:"); my $img = $pdf->image('/cgi-bin/load_image.pl?dbase='.$dbase.'&dtable='.$dtable.'&refnr='.$ref_nr.'&dcol=Bild0'); $page->image('image'=>$img, 'yalign' => 1, 'xscale'=>1.00,'yscale'=>1.00, 'xpos'=>100,'ypos'=>500); } # # # Add the missing PDF objects and a the footer then close the file $pdf->close; exit 0; ----------------generate_pdf.pl------------------------ Der Text "Bild:", den ich derzeit noch zur Kontrolle eingefügt habe, wird ausgegeben. Leider das Bild nicht. Wenn wir i.Ü. gerade bei Problemen sind, "äöüß" werden natürlich in der pdf nicht angezeigt und die herunterzuladende/ anzuzeigende pdf- Datei ist leer. Dafür wird die pdf- Datei in den temporären Ordner abgelegt und dort sind auch die Inhalte drin, ausser dem Bild und den "Sonderzeichen". Aber fangen wir erstmal mit dem Bild an. Wozu wird das ganze verwendet? Wir haben einen Landmaschinenhandel und möchten gebrauchte und neue Technik in einer Maschinenbörse auf unserer Homepage anbieten. Es soll kein Webshop sein, sondern quasi nur eine Art Übersicht. Der Interessent soll dann von der Maschine eine Art Datenblatt erzeugen können. Das ganze sieht dann so ähnlich aus, wie unsere bisherige "Gebrauchtmaschinenbörse". -- Mit freundlichen Grüßen Sebastian Reinhardt -- MySQL Perl Mailing List For list archives: http://lists.mysql.com/perl To unsubscribe: http://lists.mysql.com/[email protected]