2016-03-22 2 views
0

Мой код правильно создает файл в репозитории документов, а также прикрепляет его к записи в NetSuite. Однако тип файла - «Другой двоичный файл», когда он должен быть PDF. Я читал, что для PDF мы должны кодировать в базе 64, но даже тогда он не генерирует PDF. Кто-нибудь видит проблему?Проблема с кодировкой PDF-файла NetSuite Restore

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

Вам нужно будет сгенерировать свой PDF-файл с помощью BFO. Вот краткий пример, который генерирует 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); 
} 
+0

Спасибо за многое. Кажется, это работает. Только один последний вопрос - как мы должны ссылаться на собственную переменную внутри xml - где вы добавили «тест»? – MG2016

+0

Я понял. Большое спасибо за Вашу помощь! Сэкономил мне часы! – MG2016

2

В моем тесте коды, изменив имя файла из PO Doc Test в PO Doc Test.pdf создает файл в картотеке с типом PDF файла, а не другими бинарными файлами.

Хотя это создает файл, который NetSuite распознает как файл типа PDF, похоже, что test является недопустимым содержимым файла PDF, поэтому полученный файл не может быть открыт программой чтения Acrobat.

Документы говорят, что при попытке создания двоичных файлов, таких как PDF-файлы, содержимое должно быть закодировано в base64, поэтому вы должны обернуть свой контент в nlapiEncrypt(content, 'base64').

Кроме того, выезд nlapiXMLToPDF(). Эта функция позволяет вам определять ваш контент в XML-строке и генерировать PDF-файл.

+0

Спасибо. Вы можете видеть контент? Кажется, я получаю ошибку «Ошибка при загрузке PDF-документа». – MG2016

+0

Обновлен мой ответ. Содержимое должно быть закодировано в base64. Кроме того, формат PDF-файла более сложный, чем просто отправка текста. Специфика формата PDF можно найти на веб-сайте Adobe здесь: http://www.adobe.com/devnet/pdf/pdf_reference.html. Кроме того, вот статья о файлах PDF на NetSuite специально, но использует внешнюю библиотеку: 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

Смежные вопросы