Hi,
hat von euch schon jemand effektiv mit PDF::API2 gearbeitet? Ich brauche ein Module, mit dem ich PDF-Vorlagen importieren, Grafiken reinstellen und Texte schreiben kann. Das einzige, dass ich gefunden habe, dass das vernünftig kann ist PDF::API2.
Wenn ich das jedoch benutze und einige PDFs nacheinander erstellen will, nutzt das Teil immer mehr Speicher, bis sich hier alles aufhängt. Hab hier mal eine abgespeckte Version für euch zum probieren:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/usr/bin/perl
use strict;
use PDF::API2;
my $api2 = 0;
foreach (1..100) {
&pdfapi2();
}
exit();
sub pdfapi2 {
$api2++;
printf ("%03d. time PDF::API2\n", $api2) if ($api2 % 10 == 0);
foreach my $i (1..10) {
# -------------------------------
# ---------- Variables ----------
# -------------------------------
my $page = my $text = my $fontArial = my $fontArialBold = my $fontVerdana = undef;
my $pdf = PDF::API2->new(-file => sprintf("file%04d.pdf", $i));
my $importFile = 'form.pdf';
my $importPdf = PDF::API2->open($importFile);
foreach my $pageNr (1..$importPdf->pages()) {
$pdf->importpage($importPdf, 1);
}
# --------------------------
# ---------- Init ----------
# --------------------------
$page = $pdf->openpage(1);
$pdf->preferences(-firstpage => [$page, -fit => 1]);
$fontArial = $pdf->corefont('Arial', -encode => 'latin1');
$fontArialBold = $pdf->corefont('Arial,Bold', -encode => 'latin1');
$fontVerdana = $pdf->corefont('Verdana', -encode => 'latin1');
$page = $pdf->openpage(1);
$text = $page->text();
# -----------------------------
# ---------- Content ----------
# -----------------------------
$text->font($fontVerdana, 10);
$text->transform(-translate => [200, 200]);
$text->text('Just another PDF-File...');
# ------------------------------------
# ---------- Save & release ----------
# ------------------------------------
$pdf->save();
$importPdf->release();
$pdf->release();
}
}
Hab ich da irgendwas vergessen aufzuräumen oder ist das halt einfach so bei dem Modul? Habs mit der Version 0.3r77 versucht. Kann mir jemand auf die Sprünge helfen?
Oder weiß jemand ein anderes Modul, dass das kann? PDF::Reuse hab ich auch schon versucht. Das ist zwar schneller, aber das kann beispielsweise keine Texte über mehrere Zeilen schreiben und kommt daher nicht in Frage.
Wie erstellt ihr denn eure PDFs?
Grüsse
macMeck
It all works, as long as it's documented!