簡體   English   中英

NetSuite Restlet PDF 文件編碼問題

[英]NetSuite Restlet PDF file encoding issue

我的代碼在文檔存儲庫中正確創建了一個文件,並將其附加到 NetSuite 中的記錄。 但是,當它應該是 PDF 時,文件類型是“其他二進制文件”。 我讀到,對於 PDF,我們必須以 base 64 進行編碼,但即便如此,它也不會生成 PDF。 有人看到問題嗎?

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

傳入數據:

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

您必須使用 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);
}

在我對您的代碼的測試中,將文件名從PO Doc Test更改為PO Doc Test.pdf會在文件櫃中創建一個 PDF 文件類型而不是其他二進制文件的文件。

雖然這會創建一個 NetSuite 識別為 PDF 文件類型的文件,但該test似乎不是有效的 PDF 文件內容,因此 Acrobat 閱讀器無法打開生成的文件。

文檔說,當嘗試創建像 PDF 這樣的二進制文件時,內容必須是 base64 編碼的,因此您應該將內容包裝在nlapiEncrypt(content, 'base64')

另外,請查看nlapiXMLToPDF() 此函數可讓您在 XML 字符串中定義內容並從中生成 PDF。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM