2020-11-27

提起NS,在程序员这一块应该不怎么被人知道,算是比较小众的一门技术了,毕竟Netsuite兴起的时间算不上早,进入中国的时间更晚,除了从事这一块的程序员,可能都没有见过,恰好我是从事这块的。写这个的目的一是记录一些自己的职业生涯,二是归纳一些知识点吧。

  1. 通常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
    }; });
  2. 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>
  3.  展示效果 下面分别展示了xml中的实现效果

  4. 利用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打印中的条形码的功能的更多相关文章

  1. C#/VB.NET 在PDF表格中添加条形码

    条码的应用已深入生活和工作的方方面面.在处理条码时,常需要和各种文档格式相结合.当需要在文档中插入.编辑或者删除条码时,可借助于一些专业的类库工具来实现.本文,以操作PDF文件为例,介绍如何在编辑表格 ...

  2. winfrom 实现条形码批量打印以及将条形码信息生成PDF文件

    最近,老大让给客户做个邮包管理程序.其中,包括一些基本信息的增.删.查和改,这些倒不是很难搞定它分分钟的事.其主要难点就在于如何生成条形码.如何批量打印条形码以及将界面条形码信息批量生成以其各自的 b ...

  3. 在DevExpress程序中使用条形码二维码控件,以及进行报表打印处理

    在很多业务系统里面,越来越多涉及到条形码.二维码的应用了,不管在Web界面还是WInform界面都需要处理很多物料相关的操作,甚至很多企业为了减少录入错误操作,为每个设备进行条形码.二维码的标签,直接 ...

  4. 开源免费且稳定实用的.NET PDF打印组件itextSharp(.NET组件介绍之八)

    在这个.NET组件的介绍系列中,受到了很多园友的支持,一些园友(如:数据之巅. [秦时明月]等等这些大神 )也给我提出了对应的建议,我正在努力去改正,有不足之处还望大家多多包涵.在传播一些简单的知识的 ...

  5. 怎样对CODESOFT中的条形码进行黑白转换

      CODESOFT 2015标签设计软件能 够提供无与伦比的灵活性.功能和支持,其面对的用户也是极其的广泛.对于一些需要打印黑白反转条形码的特殊用户,例如使用黑色标签纸的用 户,CODESOFT 2 ...

  6. pdf打印乱码问题

    问题: 使用Adobe Reader将一份pdf文件通过我的虚拟打印机输出后(输出的是中间文件,等同于EMF文件),查看的时候发现有时候是乱码.最简单的必现步骤: 1.使用Adobe Reader打开 ...

  7. 基于iTextSharp的PDF操作(PDF打印,PDF下载)

    基于iTextSharp的PDF操作(PDF打印,PDF下载) 准备 1. iTextSharp的简介 iTextSharp是一个移植于java平台的iText项目,被封装成c#的组件来用于C#生成P ...

  8. .Net下的PDF打印

    简单研究了一下.Net下的PDF打印,一路发现了很多小坑. 第三方组件 这里使用的解析PDF的组件是mupdf,特点和C#调用在 这里 有介绍. 实现的功能 支持页面大小.边距.打印机选择.打印机dp ...

  9. 驰骋CCFlow开源工作流程引擎如何设置PDF打印

    前言 经常有驰骋CCFlow爱好者朋友提问关于打印相关问题.在这篇博文中大家介绍一下工作流引擎CCFlow的HTML打印和PDF打印,针对Java版本和.NET版本有不同的操作步骤,包括开关设置.水印 ...

随机推荐

  1. leetcode 98:n-queens-ii

    题目描述 继续思考"n-queens"问题 这次我们不是输出皇后的排列情况,而是输出n皇后问题一共有多少种解法 Follow up for N-Queens problem. No ...

  2. Cassandra数据模型和模式(Schema)的配置检查

    免责声明 本文档提供了有关DataStax Enterprise(DSE)和Apache Cassandra的常规数据建模和架构配置建议.本文档需要DSE / Cassandra基本知识.它不能代替官 ...

  3. [转自王垠]完全用GNU/Linux工作,摈弃Windows低效率的工作方式

    ZT (a qinghua student's article) 我已经半年没有使用 Windows 的方式工作了.Linux 高效的完成了我所有的工作. GNU/Linux 不是每个人都想用的.如果 ...

  4. Docker - 解决创建 tomcat 容器镜像却无法访问页面的问题

    问题背景 查看 tomcat 镜像 docker images 运行并创建 tomcat 容器 docker -d -p 8888:8080 --name=tomcat2 tomcat:latest ...

  5. Kafka 生产者分区策略

    分区策略 1)分区的原因 (1)方便在集群中扩展,每个 Partition 可以通过调整以适应它所在的机器,而一个 topic 又可以有多个 Partition 组成,因此整个集群就可以适应任意大小的 ...

  6. 查找数组中第k大的数

    问题:  查找出一给定数组中第k大的数.例如[3,2,7,1,8,9,6,5,4],第1大的数是9,第2大的数是8-- 思考:1. 直接从大到小排序,排好序后,第k大的数就是arr[k-1]. 2. ...

  7. UNP——第五章,TCP客户/服务程序

    tcpser void str_echo(int sockfd) { long arg1, arg2; ssize_t n; char line[MAXLINE]; for ( ; ; ) { if ...

  8. [Kafka][1][初识Kafka]

    目录 第1章 初识Kafka 1.1 发布与订阅消息系统 1.1.1 如何开始 1.1.2 独立的队列系统 1.2 Kafka登场 1.2.1 消息和批次(Message and batch) 1.2 ...

  9. 网页中Office和pdf相关文件导出

    最近被派去维护和开发一些做了一半.年久失修的项目.有一部分内容是关于word文件导出,顺带着把excel.pdf文件的导出也调研下吧,我想未来开发我应该会遇到的,遂做了下笔记分享给需要的人. 由于项目 ...

  10. Hibernate初识

    1. 持久化框架 狭义的概念:数据存储在物理存储介质不会丢失. 广义的概念:对数据的crud操作都叫持久化. 加载:hibernate的概念,数据从数据库中加载到session. 2. ORM(obj ...