NetSuite实现pdf打印中的条形码的功能
2020-11-27
提起NS,在程序员这一块应该不怎么被人知道,算是比较小众的一门技术了,毕竟Netsuite兴起的时间算不上早,进入中国的时间更晚,除了从事这一块的程序员,可能都没有见过,恰好我是从事这块的。写这个的目的一是记录一些自己的职业生涯,二是归纳一些知识点吧。
- 通常pdf打印都是通过Suitelet脚本链接去触发,下面是sl脚本中的代码。其中需要引用handlebars.min.js中的方法将数据插入到xml模板中。
/**
* @NApiVersion 2.x
* @NScriptType Suitelet
* @NModuleScope SameAccount
*/
define([ 'N/file', 'N/render', '../third/handlebars.min.js' ], function(file, render, cuxHandlebars) { /**
* Definition of the Suitelet script trigger point.
*
* @param {Object}
* context
* @param {ServerRequest}
* context.request - Encapsulation of the incoming request
* @param {ServerResponse}
* context.response - Encapsulation of the Suitelet response
* @Since 2015.2
*/
function onRequest(context) {
var response = context.response;
var request = context.request;
var data = {};
model = file.load({
id : "../xml/barcode_model.xml"
}).getContents();
var pdfXml = renderPage(model, data);
var pdfFile = render.xmlToPdf({
xmlString : pdfXml
});
response.writeFile({
file : pdfFile,
isInline : true
});
}
/**
* handlebars编译并加载对象
*
* @param html
* @param page_object
* @returns
*/
function renderPage(html, page_object) {
var template = cuxHandlebars.compile(html);
return template(page_object);
} return {
onRequest : onRequest
}; }); xml中的代码 xml中实现条形码的标签是barcode,一共有这几个属性 bar-width的范围是“0.6-1”主要用于控制条形码的长度,该属性可以不写,默认为1,也可以通过style的width属性设置条形码的宽度,经测试只对code128系列码生效, codetype="code128"用于控制条形码的类型,showtext="true",该属性为布尔类型,用于控制是否展示条形码下面文本,true为展示,false为不展示。
<?xml version="1.0"?><!DOCTYPE pdf PUBLIC "-//big.faceless.org//report" "report-1.1.dtd">
<pdf lang="ZH_CN">
<!--HAND PDF/HTML Template -->
<head>
<macrolist>
</macrolist>
<style type="text/css">
span {
font-size:12pt;
}
</style>
</head> <body width="10cm" height="10cm" padding="0.1cm 0.1cm 0.1cm 0.1cm">
<!--表体 -->
<table width="100%">
<tr height="20px">
<td align="center" valign="middle">
<span>code128码</span>
</td>
</tr>
<tr height="20px">
<td align="center" valign="middle">
<barcode style="height:30px;" codetype="code128" showtext="true"
value="123sku" />
</td>
</tr>
<tr height="30px">
<td align="center" valign="middle">
<barcode style="height:20px;" bar-width="0.7" codetype="code128"
showtext="true" value="123sku" />
</td>
</tr>
<tr height="30px">
<td align="center" valign="middle">
<barcode style="height:30px;" codetype="code128" showtext="true"
value="123sku" />
</td>
</tr>
<tr height="30px">
<td align="center" valign="middle">
<barcode style="height:30px;" codetype="code128" showtext="true"
value="123sku" />
</td>
</tr>
</table>
</body>
</pdf>展示效果 下面分别展示了xml中的实现效果

- 利用barcode打印upcA码和ean13码,upcA和ean13码与code128码有着比较明显的区别,从样式到位数,code128是支持50位之内,而ean13和upca码分别是13位和12位的条形码,且最后一位有验证,如果位数或者最后一位不对,则会出现打印错误,展示不了pdf文件。另外就是ean13码和upca吗只能通过css调解码高度,不能调解宽度,否则会报错,是否显示文本由showtext的值控制。
<?xml version="1.0"?><!DOCTYPE pdf PUBLIC "-//big.faceless.org//report" "report-1.1.dtd">
<pdf lang="ZH_CN">
<!--HAND PDF/HTML Template -->
<head>
<macrolist>
</macrolist>
<style type="text/css">
span {
font-size:12pt;
}
</style>
</head>
<body width="10cm" height="10cm" padding="0.1cm 0.1cm 0.1cm 0.1cm">
<!--表体 --> <table width="100%">
<tr height="70px">
<td align="center" valign="middle">
<barcode style="height:60px;" codetype="ean13" showtext="true"
value="6926742738053" />
</td>
</tr>
<tr height="70px">
<td align="center" valign="middle">
<barcode style="height:60px;" codetype="ean13" showtext="false"
value="6926742738053" />
</td>
</tr>
</table>
</body>
</pdf>
<?xml version="1.0"?><!DOCTYPE pdf PUBLIC "-//big.faceless.org//report" "report-1.1.dtd">
<pdf lang="ZH_CN">
<!--HAND PDF/HTML Template -->
<head>
<macrolist>
</macrolist>
<style type="text/css">
span {
font-size:12pt;
}
</style>
</head> <body width="10cm" height="10cm" padding="0.1cm 0.1cm 0.1cm 0.1cm">
<table width="100%">
<tr height="70px">
<td align="center" valign="middle">
upca码
<barcode style="height:60px;" codetype="upca" showtext="true"
value="692674273806" />
</td>
</tr>
<tr height="70px">
<td align="center" valign="middle">
<barcode style="height:60px;" codetype="upca" showtext="false"
value="692674273806" />
</td>
</tr>
</table>
</body>
</pdf>
展示效果


barcode标签能实现的不仅仅是这几种条形码,通过正确的value和codetype属性可以实现以下类型所有图码。



NetSuite实现pdf打印中的条形码的功能的更多相关文章
- C#/VB.NET 在PDF表格中添加条形码
条码的应用已深入生活和工作的方方面面.在处理条码时,常需要和各种文档格式相结合.当需要在文档中插入.编辑或者删除条码时,可借助于一些专业的类库工具来实现.本文,以操作PDF文件为例,介绍如何在编辑表格 ...
- winfrom 实现条形码批量打印以及将条形码信息生成PDF文件
最近,老大让给客户做个邮包管理程序.其中,包括一些基本信息的增.删.查和改,这些倒不是很难搞定它分分钟的事.其主要难点就在于如何生成条形码.如何批量打印条形码以及将界面条形码信息批量生成以其各自的 b ...
- 在DevExpress程序中使用条形码二维码控件,以及进行报表打印处理
在很多业务系统里面,越来越多涉及到条形码.二维码的应用了,不管在Web界面还是WInform界面都需要处理很多物料相关的操作,甚至很多企业为了减少录入错误操作,为每个设备进行条形码.二维码的标签,直接 ...
- 开源免费且稳定实用的.NET PDF打印组件itextSharp(.NET组件介绍之八)
在这个.NET组件的介绍系列中,受到了很多园友的支持,一些园友(如:数据之巅. [秦时明月]等等这些大神 )也给我提出了对应的建议,我正在努力去改正,有不足之处还望大家多多包涵.在传播一些简单的知识的 ...
- 怎样对CODESOFT中的条形码进行黑白转换
CODESOFT 2015标签设计软件能 够提供无与伦比的灵活性.功能和支持,其面对的用户也是极其的广泛.对于一些需要打印黑白反转条形码的特殊用户,例如使用黑色标签纸的用 户,CODESOFT 2 ...
- pdf打印乱码问题
问题: 使用Adobe Reader将一份pdf文件通过我的虚拟打印机输出后(输出的是中间文件,等同于EMF文件),查看的时候发现有时候是乱码.最简单的必现步骤: 1.使用Adobe Reader打开 ...
- 基于iTextSharp的PDF操作(PDF打印,PDF下载)
基于iTextSharp的PDF操作(PDF打印,PDF下载) 准备 1. iTextSharp的简介 iTextSharp是一个移植于java平台的iText项目,被封装成c#的组件来用于C#生成P ...
- .Net下的PDF打印
简单研究了一下.Net下的PDF打印,一路发现了很多小坑. 第三方组件 这里使用的解析PDF的组件是mupdf,特点和C#调用在 这里 有介绍. 实现的功能 支持页面大小.边距.打印机选择.打印机dp ...
- 驰骋CCFlow开源工作流程引擎如何设置PDF打印
前言 经常有驰骋CCFlow爱好者朋友提问关于打印相关问题.在这篇博文中大家介绍一下工作流引擎CCFlow的HTML打印和PDF打印,针对Java版本和.NET版本有不同的操作步骤,包括开关设置.水印 ...
随机推荐
- GXOI2018 滚粗记
今天考了一次蜜汁省选,滚粗了.想了想,还是写点什么记录一下 8:10 折腾一番总算拿到题目和样例了,一打开dpf,立马感觉到了不对劲. 题目一股浓浓的劣质模拟题的画风,先不说题目质量,单是排版质量都被 ...
- Simulink代码自动生成(一)
前面介绍了MDB的设计思想并对比了它和传统的嵌入式软件开发之间的差异,现在开始使用Simulink工具演示模型的搭建和C代码的自动生成过程. Matlab版本:R2018B 一.算法模型的搭建 搭建一 ...
- linux-gcc简要知识点 **
目录 交叉编译 简要知识点 ** 一些概念 GCC编译器 GCC简要使用 GCC编译过程 ** 常用的编译选项 编译多个文件 制作.使用动态库 制作.使用静态库 很有用的选项 参考 交叉编译 使用不同 ...
- Jenkins - 部署在Tomcat容器里的Jenkins,提示“反向代理设置有误”
提示"反向代理设置有误"的背景 将jenkins.war放在tomcat容器中运行 访问Jenkins-系统管理,会提示"反向代理设置有误" 如何解决 在tom ...
- TCP粘包问题的解决方案02——利用readline函数解决粘包问题
主要内容: 1.read,write 与 recv,send函数. recv函数只能用于套接口IO ssize_t recv(int sockfd,void * buff,size_t len,i ...
- linux组管理(groupadd/groupmod/gpasswd/groupdel)
配置文件: /etc/group 注:用户组(group)配置文件: /etc/gshadow 注:用户组(group)的影子文件: 查看组: cat /etc/group 或者 id -g t ...
- Java 实例化接口或抽象类
1. 实例化接口: 某一天,我们想通过反射调用一个类的方法,但发现方法参数中有一个接口,我们都知道接口不能被实例化,这该怎么办呢? 举例: public class TestLib { public ...
- kali 2020.1 更新源,并安装docker
先说一句浙大牛逼!!!装个docker折腾了半天,测了半天只有浙大的更新源能用,完美不报错!清华阿里什么的更新源都是渣渣. deb http://mirrors.zju.edu.cn/kali kal ...
- ifconfig结果说明
- 各种有趣vbs,bat脚本
短信轰炸.vbs Dim btn,ie Set ie = WScript.CreateObject("InternetExplorer.Application") ie.Visib ...