use utf8;
use Encode;
use JSON::PP;
-use Data::Dumper;
+#use Data::Dumper;
my $pdf = PDF::API2->new();
my $strpdfdata ="";
-my $pdfdata =();
-my $datafile = "";
-# my $datafile=dirname($0).'/dkspdf.json';
+my $templatedata =();
+my $data = "";
my $pdfout = "";
+my $lang = "fr";
# my $datafile=dirname($0).'/pdftest.pdf';
-GetOptions ("data|d=s" => \$datafile, "pdfoutput|o=s" => \$pdfout);
+GetOptions ("data|d=s" => \$data, "pdfoutput|o=s" => \$pdfout, "lang|l=s" =>\$lang);
if (! -e $datafile){
print "file $datafile does not exist!\n";
exit(1);
unlink($pdfout);
}
-open(DATA,$datafile);
+
+
+my $strtemplatedata = '{
+ "section":{
+ "12headerimg":{"x":50,"y":755,"width":160,"type":"image"},
+ "02headerline":{"type":"line","color":"black","width":1,"start":{"x":50,"y":753},"end":{"x":285,"y":753}},
+ "03dkstext":{"type":"text","align":"center","font":{"name":"Helvetica","size":9},"x":200,"y":743},
+ "04dksfooter":{"type":"text","align":"center","font":{"name":"Helvetica","size":10},"x":297.5,"y":25,"lineheight":15},
+ "05adrline":{"type":"line","color":"black","width":1,"start":{"x":52,"y":662},"end":{"x":280,"y":662}},
+ "06header_right":{"type":"text","align":"right","font":{"name":"Helvetica","size":11},"x":550,"y":820,"lineheight":14},
+ "07reporttype":{"type":"text","align":"right","font":{"name":"HelveticaBold","size":30},"x":550,"y":704,"lineheight":14},
+ "08tbladdress":{"type":"table","x":"50","w":"230","font":"Helvetica","font_size":"11","start_y":"680","start_h":"620","next_y":"750","next_h":"500","padding":"2","padding_bottom":"3","padding_top":"3","padding_right":"5","column_props":[{ "min_w":"200", "max_w":"200", "justify":"left" }],"header_props":[{ "font_size":"11", "font":"HelveticaBold", "bg_color":"white", "font_color":"black", "repeat":"1", "justify":"left" }],"border":"0"},
+ "09tblinvoicedata":{"type":"table","x":"390","w":"175","font":"Helvetica","font_size":"11","start_y":"680","start_h":"620","next_y":"750","next_h":"500","padding":"2","padding_bottom":"3","padding_top":"3","padding_right":"5","column_props":[ { "min_w":"70","max_w":"70","justify":"left" },{ "min_w":"90","max_w":"90","justify":"left","font":"HelveticaBold" } ],"border":"0"},
+ "10tblproductdata":{"type":"table","x":"50","w":"500","font":"Helvetica","font_size":"11","start_y":"570","start_h":"300","next_y":"750","next_h":"500","padding":"2","padding_left":"5","padding_bottom":"10","padding_top":"5","padding_right":"5","header_props":[{"font_size":"11","font":"HelveticaBold","bg_color":"#e6e6e6","font_color":"black","repeat":"1","justify":"center" }],"column_props":[ { },{ "min_w":"40","max_w":"40","justify":"right" },{ "min_w":"20","max_w":"20","justify":"right" },{ "min_w":"50","max_w":"50","justify":"right","font":"Helvetica" } ],"border":"0.5"},
+ "11totalsums":{"type":"table","x":"349.5","w":"201","font":"Helvetica","font_size":"11","start_y":"%%10tblproductdata:y%%","start_h":"150","next_y":"750","next_h":"500","padding":"2","padding_left":"5","padding_bottom":"10","padding_top":"5","padding_right":"5","column_props":[ { "justify":"right" },{ "min_w":"70","max_w":"70","justify":"right","font":"HelveticaBold" } ],"border":"0.5"}
+ },
+ "data":{"fr":{
+ "12headerimg":{"src":"'.dirname($0).'/dks_1000.png"},
+ "03dkstext":{"text":["Database Knowledge Solutions - Simplify IT!"]},
+ "04dksfooter":{"text":["DKS, Société à responsabilité limitée, RC Luxembourg,B168572 - TVA: LU 2537 5617 - No. Aut: 10024550 / 0","IBAN: LU25 0020 1100 2783 8700; BIC: BILLLULL"]},
+ "06header_right":{"text":["DKS s.à r.l.","8b, rue du Moulin","6914 Roodt/Syre","Tel: +352 691 504574","info@dks.lu / www.dks.lu"]},
+ "08tbladdress":{"text":[ ["À:"], ["%%RECEPIENT%%"], ["%%ADDRESS"], ["%%COUNTYSHORT%%-%%ZIP%% %%CITY%%"] ]},
+ "07reporttype":{"text":["Facture"]},
+ "09tblinvoicedata":{"text":[ ["NO. Facture","%%REFERENCE%%"], ["Date","%%INVOICEDATE%%"], ["Échéanche","%%REMINDERDATE%%"], ["No Client","%%CLIENTNUMBER%%"], ["Ust-Id","%%VATID%%"] ]},
+ "10tblproductdata":{"text":[ ["Produit", "Qu.","Prix unitaire","Prix Net"], ["%%PRODUCT%%", "%%QUANTIY%% %%UNIT%%","%%UNITAMOUNT%% %%CURRENCY%%","%%NETAMOUNT%% %%CURRENCY%%"] ]},
+ "11totalsums":{"text":[ ["Total Net :","%%SUMNETAMOUNT%% %%CURRENCY%%"], ["TVA (%%VATPERCENT%%%) :","%%SUMVATAMOUNT%% %%CURRENCY%%"], ["Total à payer:","%%SUMGROSSAMOUNT%% %%CURRENCY%%"] ]}
+ },"de":{
+ "12headerimg":{"src":"'.dirname($0).'/dks_1000.png"},
+ "03dkstext":{"text":["Database Knowledge Solutions - Simplify IT!"]},
+ "04dksfooter":{"text":["DKS, Société à responsabilité limitée, RC Luxembourg,B168572 - TVA: LU 2537 5617 - No. Aut: 10024550 / 0","IBAN: LU25 0020 1100 2783 8700; BIC: BILLLULL"]},
+ "06header_right":{"text":["DKS s.à r.l.","8b, rue du Moulin","6914 Roodt/Syre","Tel: +352 691 504574","info@dks.lu / www.dks.lu"]},
+ "08tbladdress":{"text":[ ["An:"], ["%%RECEPIENT%%"], ["%%ADDRESS"], ["%%COUNTYSHORT%%-%%ZIP%% %%CITY%%"] ]},
+ "07reporttype":{"text":["Rechnung"]},
+ "09tblinvoicedata":{"text":[ ["Rechnungs-Nr.","%%REFERENCE%%"], ["Datum","%%INVOICEDATE%%"], ["Fälligkeit","%%REMINDERDATE%%"], ["Kunden-Nr.","%%CLIENTNUMBER%%"], ["Ust-Id","%%VATID%%"] ]},
+ "10tblproductdata":{"text":[ ["Produkt", "Anzahl","EinzelPreis","Netto-Preis"], ["%%PRODUCT%%", "%%QUANTIY%% %%UNIT%%","%%UNITAMOUNT%% %%CURRENCY%%","%%NETAMOUNT%% %%CURRENCY%%"] ]},
+ "11totalsums":{"text":[ ["Gesamt Netto :","%%SUMNETAMOUNT%% %%CURRENCY%%"], ["MwSt. (%%VATPERCENT%%%) :","%%SUMVATAMOUNT%% %%CURRENCY%%€"], ["Gesamt Brutto :","%%SUMGROSSAMOUNT%% %%CURRENCY%%"] ]}
+ },"en":{
+ "12headerimg":{"src":"'.dirname($0).'/dks_1000.png"},
+ "03dkstext":{"text":["Database Knowledge Solutions - Simplify IT!"]},
+ "04dksfooter":{"text":["DKS, Société à responsabilité limitée, RC Luxembourg,B168572 - TVA: LU 2537 5617 - No. Aut: 10024550 / 0","IBAN: LU25 0020 1100 2783 8700; BIC: BILLLULL"]},
+ "06header_right":{"text":["DKS s.à r.l.","8b, rue du Moulin","6914 Roodt/Syre","Tel: +352 691 504574","info@dks.lu / www.dks.lu"]},
+ "08tbladdress":{"text":[ ["To:"],["%%RECEPIENT%%"], ["%%ADDRESS"], ["%%COUNTYSHORT%%-%%ZIP%% %%CITY%%"] ]},
+ "07reporttype":{"text":["Invoice"]},
+ "09tblinvoicedata":{"text":[ ["Reference.","%%REFERENCE%%"], ["Date","%%INVOICEDATE%%"], ["Due Date","%%REMINDERDATE%"], ["Client-Id","%%CLIENTNUMBER%%"], ["VAT-Id","%%VATID%%"] ]},
+ "10tblproductdata":{"text":[ ["Product", "Quantity","Unit Amount","Net Amount"], ["%%PRODUCT%%", "%%QUANTIY%% %%UNIT%%","%%UNITAMOUNT%% %%CURRENCY%%","%%NETAMOUNT%% %%CURRENCY%%"] ]},
+ "11totalsums":{"text":[ ["Net Total :","%%SUMNETAMOUNT%% %%CURRENCY%%"], ["VAT (%%VATPERCENT%%%) :","%%SUMVATAMOUNT%% %%CURRENCY%%€"], ["Total to Pay:","%%SUMGROSSAMOUNT%% %%CURRENCY%%"] ]
+ },
+ }
+}';
+
+
+open(DATA,$strtemplatedata);
while (my $l = <DATA>){
$strpdfdata .= $l;
}
close(DATA);
-$pdfdata = JSON::PP::decode_json($strpdfdata);
-
+$templatedata = JSON::PP::decode_json($strpdfdata);
+my $pdfdata->{section} = $templatedata->{section};
+$pdfdata->{data} = $templatedata->{data}->{$lang};
$pdf->preferences({-fitwindow => 1});
my $page = $pdf->page();
$page->mediabox('A4');
-#height: 842
-#width; 595
-#
+
+
+
my $endpoints = ();
foreach my $s (sort keys(%{$pdfdata->{section}})){
$endpoints->{$s} = {final_y => '', lastpage => 1,pages => 1};
}
+
+