在NetSuite中,我们的部分产品通过自定义项目字段附加到记录中MSDS documentation(以PDF文件的形式),其“类型”设置为 文档 即可。打印发票时,我们也希望自动打印出任何相关的MSDS PDF文件。 SuiteScript或任何扩展NetSuite的其他服务是否可以实现这一点?
(对于它的价值,我们知道printing MSDS documents as part of a Bill of Materials有一个选项,但是打印MSDS文档和发票似乎不是NetSuite原生的。)
答案 0 :(得分:1)
Luckily you can probably do this with Advanced HTML/PDF templates. Your MSDS needs to be in a folder that is accessible to the person doing the printing.
Check out http://bfo.com/products/report/docs/tags/tags/pdfset.html Then your normal invoice would be inside a pdf element something like:
<?xml version="1.0"?>
<!DOCTYPE pdf PUBLIC "-//big.faceless.org//report" "report-1.1.dtd">
<pdfset>
<pdf> <!-- normal invoice here -->
<head>
...
</pdf>
<#assign msdsSeen='' /> <!-- if can use javascript hash as a set then great. othewise use string -->
<#list record.item as item>
<#if item.custcol_msds_link?has_content><!-- needs to be sourced from item -->
<#assign msdsKey='_'+item.custcol_msds_link+'_' />
<#if msdsSeen?indexOf(msdsKey) == -1>
<#assign msdsSeen=msdsSeen + msdsKey />
<pdf src="${item.custcol_msds_link}" />
</#if> <!-- msds not linked -->
</#if> <!-- has msds -->
</#list>
答案 1 :(得分:1)
如果PDFSET不能正常工作,您可以使用服务器端语言(例如Java,Node.js)中的客户端应用程序进行合并。
编写RESTlet以获取记录和附加PDF的PDF。 RESTlet将以base64格式返回PDF。
接下来,步骤是在客户端应用程序中获取PDF并从base64解码并创建PDF。然后在客户端应用程序中使用流程API使用pdftk
合并PDFPDFtk是一个命令行工具,因此您可以使用编程语言中的流程API公平地调用它
以下是Node.js
中的流程API示例var spawn = require('child_process').spawn;
var pdftk = spawn('pdftk', "invoice.pdf attachment.pdf cat output out1.pdf".split(" "));
pdftk.on('close', function (code) {
if(code !==0){
return console.log('Failed PDF with code: ' + code);
}
return console.log ('All good');
});
以下是Process API的Java片段
Process process = new ProcessBuilder("pdftk","invoice.pdf", "attachment.pdf", "cat", "output", "merged.pdf").start();
errorStream = process.getErrorStream();
errorMessage = readInputStream(errorStream);
if(process.exitValue() == 0) {
trace("successful :)");
}