Eli miten saan tehtyä kuvia sisältävän PDF-tiedoston perlillä.
PDF::create ei tue kuvia, tai en ainakaan sellaista ominaisuutta löytänyt.
PDF::CreateSimple ei suostu toimimaan, ei edes MakeFile mene läpi, aina kaatuu johonkin 15 erroriin.
PDF::API2 kaatuu API2 rivillä 720 olevaan virheelliseen kutsuun.
muita ehdotuksia. ja mielellään yksinkertainen koodi esimerkki.
kuvaa, tekstiä ja viivoja pitäisi saada sivuille.
PDF::create ei tue kuvia, tai en ainakaan sellaista ominaisuutta löytänyt.
PDF::CreateSimple ei suostu toimimaan, ei edes MakeFile mene läpi, aina kaatuu johonkin 15 erroriin.
PDF::API2 kaatuu API2 rivillä 720 olevaan virheelliseen kutsuun.
muita ehdotuksia. ja mielellään yksinkertainen koodi esimerkki.
kuvaa, tekstiä ja viivoja pitäisi saada sivuille.
Vastaukset 7
Vanhimmat
niin ja käyttis on Mandrake linux
En juurikaan ole perehtynyt tuohon PDF-formaattiin (muuta kun loppukäyttäjänä).
Jokatapauksessa, jos sun on pakko Perliä käyttää generoimaan suoraan PDF kuvilla niin ainakin tuo PDF::API2 näyttäisi homman tekevän. Jos ei moduuli käänny (perl Makefile.PL, make, make test, make install) niin pistä tänne virhetekstit, jotta voidaan ihmetellä enemmän. Yleensä noi on kyllä toiminut ihan heittämällä.
Vaihtoehtona on tehdä esim PostScript-tiedosto (ja sinne kuvat mukaan eps:nä) sitten ps2pdf konvertoi tuon PDF:ksi.
eli tuo PDF::CreateSimple lähti toimimaan ihan OK.
tuotokset aukeavat aivan oikein Xpdf:llä ja gPdf:llä, myös Ooffice näyttää ne oikein, mutta...
kun siirrytään windosin puolelle niin Adobe reader vain herjaa, illegal operation inside the path, eikä suostu aukaisemaan.
Ooffice ei lue PDF:ää..... paino virhe
windowsin Foxit antaa herjan ettei pysty avaamaan.
muita millä voisi testata?
Warning: Cannot convert string "-*-time-bold-i-normal--20-*-*-*-*-*-iso8859-1" to type FontStruct
ok, hylkäsin nuo "helpot" tiet, ja latasin API2:n.
sivun saan luotua, se jopa aukeaa windowsin lukijoilla.
Mutta mitään en sivuilla saa näkymään, en tekstiä, en kuvia, pelkkä tyhjä sivu.
Moduuli on siis PDF::Create, ja tuossa alla pikku sample, jonka pitäisi toimia. En ole testannut, mutta kokeilepa. Jos ajat Unixissa/Linuxissa, niin pdf-dokun pitäisi avautua ja näkyä myös Winsussa.
use PDF::Create;
$filename = "file01.pdf";
my $pdf = new PDF::Create(
'Version' => 1.2,
'PageMode' => 'UseNone',
'Author' => 'John Doe',
'Title' => 'My Document',
);
my $root = $pdf->new_page('MediaBox' => $pdf->get_page_size("a4"));
# Add a page which inherits its attributes from $root
my $page = $root->new_page;
# Prepare 2 fonts
my $f1 = $pdf->font('Subtype' => 'Type1',
'Encoding' => 'WinAnsiEncoding',
'BaseFont' => 'Helvetica');
my $f2 = $pdf->font('Subtype' => 'Type1',
'Encoding' => 'WinAnsiEncoding',
'BaseFont' => 'Helvetica-Bold');
# Prepare a Table of Content
my $toc = $pdf->new_outline('Title' => 'My title',
'Destination' => $page);
my $center = 320;
my $row = 600;
$page->stringc($f1, 48, $center, 650, "HEADING");
$page->stringc($f2, 24, $center, 600, "Some Text...");
$page->stringc($f1, 24, $center, 560, "...more text..");
$page->stringc($f1, 24, $center, 520, "...and more...");
$page->stringc($f2, 24, $center, 480, " - Foo - ");
$page->stringc($f2, 24, $center, 440, " - Bar - ");
$page->string($f2, 16, 150, 120, "Some more text");
$page->line(150,80,350,80);
$page->string($f2, 16, 150, 60, "Again some string");
my $gif = $pdf->image("someimg.gif");
$page->image('image' => $gif, 'xpos' => 10, 'ypos'=> 10, 'xscale' => 0.25, 'yscale' => 0.25);
$pdf->close;
binmode STDOUT;
print $pdf->get_data;