2016-03-22 7 views
0

Mein Code erstellt korrekt eine Datei im Dokument-Repository sowie an einen Datensatz in NetSuite anhängen. Der Dateityp ist jedoch "Andere Binärdatei", wenn es eine PDF sein soll. Ich habe gelesen, dass wir für PDF in Base 64 kodieren müssen, aber selbst dann erzeugt es das PDF nicht. Jeder sieht ein Problem?NetSuite Restlet PDF-Datei Codierungsproblem

var fileobj = nlapiCreateFile(docname, doctype, doccontent) 
     fileobj.setName(docname) 
     fileobj.setFolder(folderid) 
     fileobj.setIsOnline(true) 
     fileobj.setEncoding('UTF-8') 
     var fileid = nlapiSubmitFile(fileobj) 

in Daten Bestanden:

{ 
    "filecontent" : "test", 
    "filename" : "PO Doc Test", 
    "filetype" : "PDF", 
    "folderid" : 521, 
    "recordtype": "purchaseorder", 
    "recordid": 13832 
} 

Antwort

2

Sie müssen Ihre PDF mit BFO generieren. Hier ist ein kurzes Beispiel, das eine PDF mit der Zeichenfolge "test" im Inneren erzeugt:

function createPDFFile(docname, folderid) 
{ 
    var xml = "<?xml version=\"1.0\"?>\n<!DOCTYPE pdf PUBLIC \"-//big.faceless.org//report\" \"report-1.1.dtd\">\n<pdf>\n<body font-size=\"18\">test</body>\n</pdf>"; 

    var fileobj= nlapiXMLToPDF(xml); 

    fileobj.setName(docname); 
    fileobj.setFolder(folderid); 
    fileobj.setIsOnline(true); 
    fileobj.setEncoding('UTF-8'); 

    var fileid = nlapiSubmitFile(fileobj); 
} 
+0

Vielen Dank dafür. Dies scheint zu funktionieren. Nur eine letzte Frage - wie sollen wir unsere eigene Variable in der XML-Datei referenzieren - wo haben Sie den 'Test' hinzugefügt? – MG2016

+0

Ich habe es herausgefunden. Vielen Dank für deine Hilfe! Sparte mir Stunden! – MG2016

2

In meinem Test des Codes, die Dateinamen PO Doc Test-PO Doc Test.pdf Ändern erstellt eine Datei in der CAB-Datei mit einem PDF-Dateityp, anstatt anderer binärer Datei.

Während dies eine Datei erstellt, die von NetSuite als PDF-Datei erkannt wird, scheint test kein gültiger PDF-Dateiinhalt zu sein, daher kann die resultierende Datei nicht vom Acrobat Reader geöffnet werden.

Die Dokumentation besagt, dass beim Versuch, Binärdateien wie PDFs zu erstellen, der Inhalt base64-codiert sein muss, sodass Sie den Inhalt in nlapiEncrypt(content, 'base64') verpacken sollten.

Überprüfen Sie auch nlapiXMLToPDF(). Mit dieser Funktion können Sie Ihren Inhalt in einer XML-Zeichenfolge definieren und daraus eine PDF generieren.

+0

Danke. Können Sie den Inhalt sehen? Es scheint, dass der Fehler "Fehler beim Laden des PDF-Dokuments" auftritt. – MG2016

+0

Aktualisiert meine Antwort. Der Inhalt sollte Base64-codiert sein. Außerdem ist das PDF-Dateiformat komplizierter als das Senden von Text. Die PDF-Formatspezifikation finden Sie auf der Adobe-Website unter http://www.adobe.com/devnet/pdf/pdf_reference.html. Auch hier ist ein Artikel über PDFs auf NetSuite speziell, aber verwendet eine externe Bibliothek: http://blog.prolecto.com/2014/01/04/framework-for-generating-custom-netsuite-pdf-files/ –

+0

Ich versuchte var doccontent = nlapiEncrypt (requestdata.filecontent, 'base64'). Aber immer noch öffnet sich das Dokument nicht. NetSuite doc sagt nicht viel mehr über PDF. Derselbe Code funktioniert perfekt, wenn eine .txt-Datei erstellt wird. – MG2016