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版本有不同的操作步骤,包括开关设置.水印 ...
随机推荐
- Spring Cloud Alibaba 之 版本选择
alibaba 版本问题 一下是Spring cloud ,Spring Cloud Alibaba, Spring Boot 之间的版本选择 在版本选择上大家尽量选择稳定版,也就是Release 后 ...
- 【SpringBoot】11.Springboot整合SpringMVC+Mybatis(上)
Springboot整合SpringMVC+Mybatis 需求分析:通过使用Springboot+SpringMVC+Mybatis 整合实现一个对数据库表users表的CRUD操作. 1.创建项目 ...
- Assert类的静态方法
五:常用断言 在NUnit中,断言是单元测试的核心.NUnit提供了一组丰富的断言,这些断言是Assert类的静态方法.如果一个断言失败,方法的调用不会返回值,并且会报告一个错误.如果一个测试包含多个 ...
- Pytest学习(七) - skip、skipif的使用
前言 作为一个java党,我还是觉得pytest和testng很像,有时候真的会感觉到代码语言在某种程度上是相通的,那么今天来说说这两个知识点. skip和skipif,见名知意,就是跳过测试呗,直白 ...
- [MIT6.006] 4. Heaps and Heap Sort 堆,堆排序
第4节课仍然是讲排序,但介绍的是一种很高效的堆排序. 在编程过程中,有时候会需要进行extrat_max的操作,即从一个数列里挨个抽取最大值并将其它从原数列中移除.而排序问题也可以看作是一个extra ...
- nginx&http 第六章 http 协议学习 1
1.HTTP方法 GET :获取资源 ,GET 方法用来请求访问已被 URI 识别的资源 POST:传输(上传和下载)实体主体 ,POST 方法用来传输实体的主体.虽然用 GET 方法也可以传输实体的 ...
- parted会启动你的ceph osd,意外不?
前言 如果看到标题,你是不是第一眼觉得写错了,这个怎么可能,完全就是两个不相关的东西,最开始我也是这么想的,直到我发现真的是这样的时候,也是很意外,还是弄清楚下比较好,不然在某个操作下,也许就会出现意 ...
- 创建一个自定义名称的Ceph集群
前言 这里有个条件,系统环境是Centos 7 ,Ceph 的版本为Jewel版本,因为这个组合下是由systemctl来进行服务控制的,所以需要做稍微的改动即可实现 准备工作 部署mon的时候需要修 ...
- ThreadLocal应用及源码分析
ThreadLocal 基本使用 ThreadLocal 的作用是:提供线程内的局部变量,不同的线程之间不会相互干扰,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或组件之间一些公共变量传 ...
- 结合实战和源码来聊聊Java中的SPI机制?
写在前面 SPI机制能够非常方便的为某个接口动态指定其实现类,在某种程度上,这也是某些框架具有高度可扩展性的基础.今天,我们就从源码级别深入探讨下Java中的SPI机制. 注:文章已收录到:https ...