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版本有不同的操作步骤,包括开关设置.水印 ...
随机推荐
- VC中句柄、指针、ID之间的转换
win32直接操作的是句柄HANDLE,每个句柄就对应windows窗口,而vc对HANDLE进行类封装,间接操作的都是HANDLE,现在句柄只是类的一个成员变量. 从句柄到指针 CWnd* pWnd ...
- K8S 搭建 Kafka:2.13-2.6.0 和 Zookeeper:3.6.2 集群
搭建 Kafka:2.13-2.6.0 和 Zookeeper:3.6.2 集群 一.服务版本信息: Kafka:v2.13-2.6.0 Zookeeper:v3.6.2 Kubernetes:v1. ...
- Rename object in TFS[Unable to import Trying to import Table MFATable_test1 with ID 50003 ID already held by Table MFATable1 ]
You can get this error message while renaming object that is checked out from TFS. Unable to import ...
- 80386学习(一) 80386CPU介绍
一.80386CPU介绍 Inter80386CPU是Inter公司于1985年推出的第一款32位80x86系列的微处理器.80386的数据总线是32位的,其地址总线也是32位,因而最大可寻址4GB的 ...
- 02 . Vue入门基础之条件渲染,列表渲染,事件处理器,表单控件绑定
vue基础 声明式渲染 Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统 Example1 <!DOCTYPE html> <html> ...
- Git操作:使用.gitignore来管理VS工程
在使用Git管理Visual Studio的工程时,经常会碰到这种情况: 整个工程文件夹有100多M,而源代码只有100多K.如果全部添加进Git,那每次编译时产生100M垃圾,10次Git提交就会使 ...
- 第三方库文件Joi对数据进行验证的方法以及解决Joi.validate is not a function的问题
Joi:javaScript对象的规则描述语言和验证器 1.npm install joi@14.3.1 2.建立joi.js文件 3.导入第三方包joi const Joi = require('j ...
- JavaScript一元运算符、二元运算符和三元运算符
在JavaScript中,运算符可以根据其实际操作数的个数进行分类. JavaScript中的大多数运算符是一个二元运算符(binary operator),将两个表达式合并成为一个稍复杂的表达式.譬 ...
- shell编程之算术扩展(引号、命令替换、算术扩展)
1.单引号 .双引号.反引号的区别 单引号:忽略所有特殊字符 双引号:忽略大部分特殊字符($ `等字符除外) [root@tlinux shell]# echo '*' * [root@tlinux ...
- mon的稳定性问题
MON的稳定性问题: mon的选举风暴影响客户端IO LevelDB的暴涨 频繁的客户端请求的DDOS mon选举风暴: monmap会因为mon之间或者mon与客户端之间网络的影响或者消息传递的异常 ...