Re: problem creating an pdf fileincluding a image stored in mysqldatabase

Re: problem creating an pdf fileincluding a image stored in mysqldatabase

am 17.04.2010 01:31:29 von Sebastian Reinhardt

Am 17.04.2010 01:03, schrieb Selke, Gisbert W.:
>> -----Ursprüngliche Nachricht-----
>> Von: Sebastian Reinhardt [mailto:snr@lmv-hartmannsdorf.de]
>> 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/perl?unsub=gcdmp-msql-mysql-modules@m .gmane.org