Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst PDF generieren mit JavaScript

Mitglied: CortexA8

CortexA8 (Level 1) - Jetzt verbinden

02.07.2014 um 20:11 Uhr, 4073 Aufrufe, 3 Kommentare

Hallo zusammen,
ich habe ein "kleines" Problem:
Ich habe versucht ein PDF-Dokument im Browser zu erstellen. das ganze hat soweit auch gut geklappt, bis ich dynamische Inhalte hinzufügen wollte.
Ich habe makepdf.js genutzt.
Den Content bekomme ich aus einer XML.
Hier ist mein Code:

01.
  
02.
<html> 
03.
<head> 
04.
<title> TestPDF </title> 
05.
<script src='build/pdfmake.js'></script> 
06.
<script src='build/vfs_fonts.js'></script> 
07.
<script> 
08.
function getDate(){ 
09.
                               var today = new Date(); 
10.
                               var dd = today.getDate(); 
11.
                               var mm = today.getMonth()+1; 
12.
                               var mm = today.getMonth()+1; 
13.
                               var yyyy = today.getFullYear(); 
14.
  
15.
                               if(dd<10) { 
16.
                               dd='0'+dd 
17.
18.
  
19.
                                               if(mm<10) { 
20.
                                                               mm='0'+mm 
21.
22.
  
23.
                                                               today = dd+'/'+mm+'/'+yyyy; 
24.
                                                               return today; 
25.
26.
  
27.
function loadXMLDoc(filename) { 
28.
    xhttp=new XMLHttpRequest(); 
29.
                xhttp.open("GET",filename,false); 
30.
                xhttp.send(); 
31.
                return xhttp.responseXML; 
32.
                // Gibt das XML-Objekt zurück 
33.
34.
  
35.
function loadXMLDoc(filename) { 
36.
    xhttp=new XMLHttpRequest(); 
37.
                xhttp.open("GET",filename,false); 
38.
                xhttp.send(); 
39.
                return xhttp.responseXML; 
40.
41.
  
42.
function test() { 
43.
  
44.
//return "{ style: 'table', table: { headerRows: 1, widths: [40, 120, 200, 85, 30], body: [[{ text: 'Item', style: 'tableHeader' }, { text: 'Part Number', style: 'tableHeader'}, { text: 'Description', style: 'tableHeader'}, { text: 'Stor. Bin / WO', style: 'tableHeader'}, { text: 'QTY', style: 'tableHeader'}],[{ text: '100', alignment: 'center'}, 'MTC6-8585-BTO', 'Ship To: DLC104836D -- Symbol Technologies, INC.', '336182', { text: '3', alignment: 'center'}],]}}"
45.
  
46.
47.
  
48.
function makeTable() { 
49.
                var xmlDoc=loadXMLDoc("sample.xml"); 
50.
                var counterpos = xmlDoc.getElementsByTagName("POSITION").length; // sample.xml -- 21 
51.
                var output = new Array(counterpos); 
52.
                var vk = ([ '100', 'lesung', 'termin', '&uuml;', '&auml;'], [ '101', 'lesung', 'termin', '101', '101']); 
53.
                for(var i = 0; i < counterpos; i++) { 
54.
                               var item = xmlDoc.getElementsByTagName("POSITION")[i].getAttribute("item") ; 
55.
                               var partnumber = xmlDoc.getElementsByTagName("PN")[i].childNodes[0].nodeValue; 
56.
                               var descrition = xmlDoc.getElementsByTagName("NAME")[i].childNodes[0].nodeValue ; 
57.
                               var category = xmlDoc.getElementsByTagName("POSITION")[i].getAttribute("category"); 
58.
                               if(category == "ZTM9" || category == "ZTM5") { 
59.
                                               var binwo = xmlDoc.getElementsByTagName("POSITION")[i].getAttribute("wo"); 
60.
61.
                               if(category == "ZTN2") { 
62.
                                               var binwo = xmlDoc.getElementsByTagName("BIN")[i].childNodes[0].nodeValue ; 
63.
64.
                               if(category == "TAX") { 
65.
                                               var binwo = " "
66.
67.
                               var quantity = xmlDoc.getElementsByTagName("QTY")[i].childNodes[0].nodeValue ; 
68.
                               
69.
                               //return [ item, partnumber, descrition, binwo, quantity] ; 
70.
                               //output[i] = [ item, partnumber, descrition, binwo, quantity] ; 
71.
                               output[i] = "[" + [ item, partnumber, descrition, binwo, quantity] + "]"
72.
  
73.
74.
                //var stroutput = output.toString(); 
75.
                //[{ text: '100', alignment: 'center'}, 'MTC6-8585-BTO', 'Ship To: DLC104836D -- Symbol Technologies, INC.', '336182', { text: '3', alignment: 'center'}], 
76.
                return output;  // Alles Values für die Table 
77.
                
78.
                return output[1];  // Dieses Array kann ausgeben werden!!!  
79.
                
80.
                //return "[ '100', 'MTC6-8585-BTO', 'Ship To: DLC104836D -- Symbol Technologies, INC.', '336182', '3' ]"
81.
                
82.
83.
  
84.
function creationPDF() { 
85.
  
86.
                var xmlDoc=loadXMLDoc("sample.xml"); 
87.
                var counterpos = xmlDoc.getElementsByTagName("POSITION").length; // sample.xml -- 21 
88.
                
89.
                alert( makeTable() ); 
90.
                //alert(counterpos); 
91.
                var docDefinition = { 
92.
                footer: function(currentPage, pageCount) { 
93.
                // Footer 
94.
                // Contents: Page Count, Print date 
95.
                return { text: 'Page ' + currentPage.toString() + ' of ' + pageCount + ' | Print Date: ' + getDate() , alignment: 'center', marginTop: -20}; 
96.
                
97.
                }, 
98.
    header: function(currentPage, pageCount) { 
99.
    //Header 
100.
    //Contents: A-DloG Logo, Basic Information(SO, Coustumer), Title 
101.
    // return {  text: 'A-DloG Picking List\n Sales Order: 7005500', style: 'header' }; 
102.
                //return { image: 'adlog.jpg'       }; 
103.
                return {text: 'A-DloG Picking List', alignment: 'center', fontSize: 20, color: 'red' }; 
104.
                //return { image: 'adlog.jpg'       }; 
105.
    }, 
106.
                
107.
                content: [ 
108.
                                                               '\n', 
109.
                                                               
110.
                                                                                              {              
111.
                                                                                              table: { 
112.
                                                                                                                             widths: [350, 150], 
113.
                                                                                                                             body: [ 
114.
                                                                                                                                                             ['Sold To: DLC104836 -- Symbol Technologies Inc.', 'Sales Order: 7005976'], 
115.
                                                                                                                                                             ['Ship To: DLC104836D -- Symbol Technologies, INC.', 'Due Date: 05/06/2014']                                                                                                                                                  
116.
117.
118.
                                                                                              },             
119.
                                                               
120.
                                                               '\n \n', 
121.
                                                                              {              
122.
                                                                                              table: { 
123.
                                                                                                                             widths: [100, 397], 
124.
                                                                                                                             height: [200, 200], 
125.
                                                                                                                             body: [ 
126.
                                                                                                                                                             [ 'Note', '\n \n \n \n']                                                                                                                                                                                                                                                                                                              
127.
128.
129.
                                                                              },             
130.
                                                               '\n \n', 
131.
132.
                                                               
133.
                                                                                              style: 'table', 
134.
                                                                                              table: { 
135.
                                                                                                                             //headerRows: 1, 
136.
                                                                                                                             widths: [40, 120, 200, 85, 30], 
137.
                                                                                                                             body: [ 
138.
                                                                                                                                                             [{ text: 'Item', style: 'tableHeader' }, { text: 'Part Number', style: 'tableHeader'}, { text: 'Description', style: 'tableHeader'}, { text: 'Stor. Bin / WO', style: 'tableHeader'}, { text: 'QTY', style: 'tableHeader'}], 
139.
                                                                                                                                                             
140.
                                                                                                                                                             //[{ text: '100', alignment: 'center'}, 'MTC6-8585-BTO', 'Ship To: DLC104836D -- Symbol Technologies, INC.', '336182', { text: '3', alignment: 'center'}], 
141.
                                                                                                                                                             
142.
                                                                                                                                                             //[{ text: '100', alignment: 'center'}, 'MTC6-8585-BTO', 'Ship To: DLC104836D -- Symbol Technologies, INC.', '336182', { text: '3', alignment: 'center'}], 
143.
                                                                                                                                                             ['110', 'MTC6-8585-BTO', 'Ship To: DLC104836D -- Symbol Technologies, INC.', '336182', '3'], 
144.
                                                                                                                                                             //test() 
145.
                                                                                                                                                             //makeTable() 
146.
                                                                                                                                                             //test() 
147.
148.
                                                                                              } // No Layout, Standart Table 
149.
150.
                ], 
151.
                styles: { 
152.
                               header: { 
153.
                                               
154.
                                               bold: true, 
155.
                                               margin: [40, 0, 6, 100] 
156.
                               }, 
157.
                               footer: { 
158.
                                               fontSize: 16, 
159.
                                               bold: true, 
160.
                                               margin: [20, 10, 0, 5] 
161.
                               }, 
162.
                               subheader: { 
163.
                                               fontSize: 16, 
164.
                                               bold: true, 
165.
                                               margin: [0, 10, 0, 5] 
166.
                               }, 
167.
                               headerinfo: { 
168.
                               margin: [40, 0, 6, 10] 
169.
                               }, 
170.
                               table: { 
171.
                                               margin: [0, 0, 0, 50] // Left, Top, X , 
172.
                               
173.
                               }, 
174.
                               tableHeader: { 
175.
                                               bold: true, 
176.
                                               alignment: 'center', 
177.
                                               fontSize: 13, 
178.
                                               color: 'black' 
179.
180.
181.
}; 
182.
  
183.
//pdfMake.createPdf(docDefinition).open(); 
184.
pdfMake.createPdf(docDefinition).download('SO7005500.pdf'); 
185.
  
186.
187.
</script> 
188.
</head> 
189.
<body> 
190.
  
191.
<a href="javascript:creationPDF()" class="button">Create Picking List</a> 
192.
 
193.
  
194.
</body> 
195.
</html>
Leider kann ich maximal einen Wert returnen.
Eine Schleife ist auch nicht möglich, wenn doch bitte sagen ;)
Ich hab alles mögliche probiert und muss mich jetzt an euch wenden. Hat jemand schon damit gearbeitet bzw. kennt jemand einen Lösung für mein Problem ?
Bitte keine Posts wie : "Warum nicht jspdf", es sei denn er hat ein Beispiel, das besser läuft als meins ;)
Ich hatte bei jspdf deutlich mehr Probleme...

Vielen Dank schonmal im Voraus.

Mitglied: bytecounter
03.07.2014 um 09:41 Uhr
Hallo,

hast Du Dir den Code mal nach dem Copy&Paste angeschaut? Es gibt nach allgemeinen Richtlinien eine Längenbegrenzung. Bei der PDF-Erzeugung ist es ja fast unmöglich zu erkennen, welche Klammer wohin gehört.

Des Weiteren kann ich aus dem Code nicht das Problem erkennen? Return kann nur einen Wert zurückgeben. Der Trick: Ein Array..

Meine Glaskugel sagt mir jetzt, dass Du von Zeile 76 / 78 redest. Allerdings finde ich nicht den Punkt, an dem Du diese Funktion überhaupt aufrufst...
Hier der Trick: Kommentare...

vg
Bytecounter
Bitte warten ..
Mitglied: CortexA8
06.07.2014 um 14:36 Uhr
Hi,
ja ist mir auch aufgefallen, tut ma wirklich Leid, ich entschlacke den Code mal ;)
Danke schonmal für´s Interesse :D

LG CortexA8
Bitte warten ..
Mitglied: CortexA8
07.07.2014 um 10:31 Uhr
Hi,
also ich habe eine Alternative gefunden/erstellt:
Ich hab einfach eine HTML-Tablle genommen auf DIN A4 angepasst und per IE8 ausgedruckt.
Der footer kommt ja automatisch (Seiten + Datum). Den Kopf muss man unter Druckeinstellungen noch anpassen.
Also an alle die etwas ähnliches vorhaben, dies ist die einfachere Lösung !

MfG CortexA8
Bitte warten ..
Ähnliche Inhalte
Apache Server
JavaScript wird nicht ausgeführt
Frage von schneerunzelApache Server

Hallo zusammen ich wollte gerade das Tool open3A installieren. Dabei bekomme ich einen Fehler die Dateien sind alle mit ...

JavaScript
Javascript Array
gelöst Frage von internet2107JavaScript2 Kommentare

Ich habe folgendes Problem. Ersetze ich die folgenden Zahlen gegen Variablenwerte, bekomme ich nicht das Ergebnis, wie mit festen ...

JavaScript
Javascript Funktionen
gelöst Frage von agowa338JavaScript5 Kommentare

Hallo, habe gerade mehrere schönen Javascripte per mail bekommen und frage mich gerade, was eigentlich folgendes in einem Javascript ...

JavaScript
JavaScript Map
Frage von tobmesJavaScript7 Kommentare

Hi, ich bins mal wider :). Ich spiele immernoch mit JavaScript herum und hänge jetzt mal wieder. Ich habe ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 2 TagenWindows 105 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 2 TagenAdministrator.de Feedback18 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 2 TagenHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 3 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Router & Routing
Router auf Orginal Firmware zurück flashen mit Tftpd
Frage von ILeonardRouter & Routing21 Kommentare

Hallo, Ich habe zwei Router, einmal TP-Link 841n v11 und TP-Link 940N v5. Ich wollte fragen, ob jemand mir ...

Router & Routing
WRT keine Verbindung zum Web Interface
gelöst Frage von ILeonardRouter & Routing18 Kommentare

Hallo, Ich habe einen TP-Link WR841n mit wrt geflasht, das Problem ist ich kann mich mit 192.168.1.1 nicht verbinden. ...

TK-Netze & Geräte
Telefonie zweier Fritzboxen mit je eigenem DSL Anschluss verbinden
Frage von hannsgmaulwurfTK-Netze & Geräte10 Kommentare

Hallo zusammen, ich habe hier einen Haushalt mit zwei Anschlüssen. Einmal ISDN, einmal DSL. An jedem Anschluss hängt eine ...

Windows Server
Standortvernetzung zu einem Strato VServer (Windows)
Frage von matzefratze81Windows Server10 Kommentare

Moin, ich komme aus einem Enterprise-Umfeld und habe den Fehler gemacht, dass ich mich auf ein kleines Unternehmen eingelassen ...