NetSuite Restlet PDF文件编码问题

时间:2016-03-22 12:39:43

标签: javascript restlet netsuite suitescript

我的代码在文档存储库中正确创建了一个文件,并将其附加到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
}

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

在我的代码测试中,将文件名从PO Doc Test更改为PO Doc Test.pdf会在文件柜中创建一个文件类型而不是其他二进制文件。

虽然这会创建一个NetSuite识别为PDF文件类型的文件,但test似乎无效的PDF文件内容,因此Acrobat reader无法打开生成的文件。

文档说,在尝试创建像PDF这样的二进制文件时,内容必须是base64编码的,因此您应该将内容包装在nlapiEncrypt(content, 'base64')中。

另外,请查看nlapiXMLToPDF()。此功能允许您在XML字符串中定义内容并从中生成PDF。