0

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

2 回答 2

3

您必须使用 BFO 生成 PDF。这是一个生成 PDF 的快速示例,其中包含字符串“test”:

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);
}
于 2016-03-22T14:58:25.977 回答
2

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

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

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

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

于 2016-03-22T13:23:23.003 回答