2016-03-22 11 views
0

私のコードは、文書リポジトリにファイルを正しく作成し、NetSuiteのレコードに添付します。ただし、PDFでなければならないファイルタイプは「その他のバイナリファイル」です。 PDFの場合は、ベース64でエンコードする必要がありますが、その場合でもPDFを生成しません。誰でも問題がありますか?NetSuite Restlet PDFファイルのエンコーディングの問題

データで渡さ
var fileobj = nlapiCreateFile(docname, doctype, doccontent) 
     fileobj.setName(docname) 
     fileobj.setFolder(folderid) 
     fileobj.setIsOnline(true) 
     fileobj.setEncoding('UTF-8') 
     var fileid = nlapiSubmitFile(fileobj) 

PO Doc TestからPO Doc Test.pdfにファイル名を変更し、コードの私のテストで

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

答えて

2

BFOを使用してPDFを生成する必要があります。ここには、「test」という文字列を含むPDFを生成する簡単な例があります。

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

ありがとうございました。これはうまくいくようです。最終的な質問 - xmlの内部で独自の変数をどのように参照するべきですか - ここで 'テスト'を追加しましたか? – MG2016

+0

私はそれを理解しました。あなたの助けをありがとう!時間を節約しました! – MG2016

2

は、PDFファイルの種類ではなく、他のバイナリファイルとファイルキャビネットにファイルを作成します。

これは、NetSuiteがPDFファイルタイプとして認識するファイルを作成しますが、testは有効なPDFファイルコンテンツではないように見えるため、Acrobat Readerで結果ファイルを開くことはできません。

PDFのようなバイナリファイルを作成しようとすると、コンテンツはbase64でエンコードされている必要がありますので、コンテンツをnlapiEncrypt(content, 'base64')にラップする必要があります。

また、nlapiXMLToPDF()をチェックしてください。この関数を使用すると、コンテンツをXML文字列で定義し、そこからPDFを生成できます。

+0

ありがとう。あなたはコンテンツを見ることができますか?私は 'PDF文書を読み込めませんでした'というエラーが出るようです。 – MG2016

+0

私の答えを更新しました。コンテンツはbase64でエンコードする必要があります。また、PDFファイル形式はテキストを送信するだけでは複雑です。 PDF形式の仕様は、AdobeのWebサイト(http://www.adobe.com/devnet/pdf/pdf_reference.html)で確認できます。また、NetSuiteのPDFに関する記事がありますが、外部ライブラリを使用しています:http://blog.prolecto.com/2014/01/04/framework-for-generating-custom-netsuite-pdf-files/ –

+0

私はvarを試しましたdoccontent = nlapiEncrypt(requestdata.filecontent、 'base64')。しかし、依然として文書は開かない。 NetSuiteのdocは、PDFに関してはあまり言及していません。同じコードが.txtファイルを完全に細かく作成します。 – MG2016