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. uniapp分享功能-系统分享

    uni-app分享 uniapp官网地址:https://uniapp.dcloud.io/api/plugins/share?id=sharewithsystem 调用系统分享组件发送分享消息,不需 ...

  2. CF1444A (1445C)Division 题解

    题意:求最大的正整数 \(x\) ,使 \(x \mid p且q \nmid x\) . 首先,当 \(q \nmid p\) ,显然取 \(x=p\) 是最优解. 现在,我们考虑 \(q \mid ...

  3. CF1413C Perform Easily 题解

    毒瘤C题,考场卡我1个小时 首先,这道题难点在哪里?它的最大值与最小值都是浮动的. 怎么办?把最小/最大值固定! 以把最小值固定为例,我们枚举每个音符,并枚举它使用哪条琴弦,将它此时的位置强制其作为最 ...

  4. Metasploitable3学习笔记--永恒之蓝漏洞复现

    漏洞描述: Eternalblue通过TCP端口445和139来利用SMBv1和NBT中的远程代码执行漏洞,恶意代码会扫描开放445文件共享端口的Windows机器,无需用户任何操作,只要开机上网,不 ...

  5. 卡特兰数 洛谷P1641 [SCOI2010]生成字符串

    卡特兰数 参考博客 介绍 卡特兰数为组合数学中的一种特殊数列,用于解决一类特殊问题 设\(f(n)\)为卡特兰数的第n项 其通项公式为 \[f(n)=\frac{2n\choose n}{n+1} \ ...

  6. 邻居子系统 arp 状态图

  7. Netlink 内核实现分析 1

    Netlink 是一种IPC(Inter Process Commumicate)机制,它是一种用于内核与用户空间通信的机制,在一般情况下,用户态和内核态通信会使用传统的Ioctl.sysfs属性文件 ...

  8. spring boot和spring cloud的区别

    Java中说到微服务肯定离不开Spring Boot和Spring Cloud,这两者到底有什么关系,什么是微服务,如果单纯的说SpringBoot,SpringCloud,都是不准确的,那应该怎么回 ...

  9. 在iOS 4中创建一个LDGradientView样式的渐变视图

    本教程将演示如何在 Swift 4 中创建一个多功能的.@IBDesignable 样式的渐变视图类.你可以将 CAGradientView 放到 storyboard 中,并在设计时预览,或者以编程 ...

  10. 匹配p后面不是h的单词

    $string = 'python perl pear php'; // 获取p后面不是h的单词 $preg = '/\bp(?!h)[a-z]+\b/'; $status = preg_match_ ...