2016-07-05 98 views
1

NetSuite Restlet PDF file encoding issue的NetSuite的Restlet輸出概率

上述螺紋似乎給予解決outputing用的NetSuite的Restlet一個pdf。據我所知,你不能從restlet中輸出pdf,所以我很困惑。我正在使用restlet生成報告,最終需要將信息輸出爲pdf,因此我試圖查看是否有工作。我嘗試了以上線程的答案代碼,並得到了預期的錯誤:「錯誤代碼:INVALID_RETURN_DATA_FORMAT錯誤消息:無效的數據格式,您應該返回TEXT。」

我錯過了什麼嗎?有沒有辦法使用NetSuite RESTlet將xml導出到pdf?

回答

2

您參考的線程討論瞭如何在Netsuite中生成PDF文件。如果你想從RESTLet中返回一個PDF,你必須將它作爲JSON對象的成員返回。例如:

var pdfFile = genPDF(); // base this on the sample 
return{ 
fileName: pdfFile.getName(), 
fileContent: nlapiEncrypt(pdfFile.getValue(), 'base64') 
}; 

然後你的接收器將不得不創建實際的文件。

回想一下,RESTLets用於應用程序間通信。如果您嘗試將PDF返回給瀏覽器,則應該使用Suitelet。

如果這是一個較大的應用程序的一部分,你需要RESTLet然後檢查這個帖子:Save base64 string as PDF at client side with JavaScript的選項來顯示RESTLet響應。

+0

謝謝!最初這是一個Suitelet,但它必須處理太多的信息,以便在完成報告之前超時。僅僅因爲這個原因纔將它轉移到RESTlet。也許有更高效的解決方案?我有一個客戶端腳本,它發送一些參數並執行restlet,然後從restlet中將這些信息發送到pdf。所以這聽起來像我需要將數據發送回restlet的客戶端腳本? – Gus

+0

一種策略是將請求發佈到自定義記錄並觸發一個計劃腳本,該腳本從自定義記錄中的信息生成pdf。計劃的腳本可以通過電子郵件發送文件,或觸發郵件的頁面可以監視隊列並在完成時檢索結果。或者,如果這是每天的事情(當天訂單的複雜pdf),您可以觸發此計劃按計劃運行,並且工作人員可以在Netsuite帳戶中的鏈接中選擇該日期。 – bknights

+0

只有當有人按下按鈕才能執行此腳本時,該腳本纔會運行。現在我創建了一個restlet來創建一個自定義記錄,並將該記錄中的一個字段設置爲來自restlet的xml字符串的值。我正在考慮創建一個腳本來執行這個自定義記錄,然後從xml字符串生成pdf。有沒有辦法讓restlet等待附加到自定義記錄的腳本的響應,獲取生成的pdf鏈接並在瀏覽器中顯示該鏈接? – Gus

1

通讀該答案,看起來您需要在返回之前將PDF編碼/轉換爲字符串格式,因此您需要使用base64編碼。

NS方法nlapiEncrypt(content, 'base64')好像它可能是一個很好的開始。

調查的另一個途徑,我沒有嘗試,首先將PDF保存在文件櫃中,然後返回到該文件的公共鏈接。您需要確保文件具有正確的權限。