起名Lodop实现web套打

在编写Android自定义按钮示例基础上,尽管要钦点字体大小发生那样的作用:

 

起名 1

WEB套打可选方案不多,理想的越来越少,利用免费控件Lodop+JavaScript达成规范套打,算是相比较经典的采纳。那种方案其实比较简单,利用三个htm文件就能够完成模板设计进度,差不离是“空手套”式的支出,但精晓这个步骤依然须求点时间,下边一步步详实演示验证:

骨子里是不须求自定义变量的,能够一直利用TextView的安插属性:

 

<com.easymorse.textbutton.TextButton
    android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
    android:layout_weight=”1″ android:text=”电影”
    android:gravity=”center_vertical|center_horizontal”
    android:background=”@drawable/button” android:focusable=”true”
    android:clickable=”true” android:textSize=”22sp” />

第3步:建立三个空手的模版设计文本

把以下超文本代码复制到一个本土htm文件中:

 

<html>
<body>
<object id="LODOP" classid="clsid:2105C259-1E0C-4534-8141-A753534CB4CA" width=0 height=0></object>
<script language="javascript" type="text/javascript">
  function CreatePrintPage() {
    LODOP.PRINT_INIT("套打EMS的模板");
  };    
</script> 
进入<a href="javascript:;" onclick="javascript:CreatePrintPage();LODOP.PRINT_DESIGN();">模板设计</a><br><br>
进入<a href="javascript:;" onclick="javascript:CreatePrintPage();LODOP.PREVIEW();">模板的打印预览</a>
</body>
</html>

 

  

本文模拟EMS快递单的主次开发,文件起名称叫printEMS.htm,近年来称它为模板设计文本

在此处字体大小使用了sp,那里要说一下sp与dp(dip)的界别,dip是:

其次步:用浏览器打开该文件

    在当三步跳件夹中双击该公文就能够打开,但在进入设计前边,你的机械供给设置Lodop,如若还没安装过,

请在如下地址下载安装文件(解压rar后运维那1个exe文件,Lodop是叁个1M左右的小文件):

http://mt.runon.cn/samples/install\_lodop.rar

或 http://mtsoftware.v053.gokao.net/samples/install\_lodop.rar

        dp Density-independent Pixels – an abstract unit that is
based on the physical density of the screen. These units are relative to
a 160 dpi screen, so one dp is one pixel on a 160 dpi screen. The ratio
of dp-to-pixel will change with the screen density, but not necessarily
in direct proportion. Note: The compiler accepts both “dip” and “dp”,
though “dp” is more consistent with “sp”.

其三步:准备设计

    成功安装Lodop之后再行打开模板设计文本printEMS.htm,点击在那之中“模板设计”链接,就弹出如下空白的打字与印刷设计窗口:起名 2

   为了尽早定位模板中的数据地方,你须要做一张单据扫描图作为背景,当然未有扫描图也能成功,只是必要多摸索一遍,费点时间而已。

   下边是本人做的EMS扫描图,你把该图另存成3个jpg文件,以便大家1同形成前边的言传身教步骤。

起名 3

不过,借使和字体有关,最棒依然用sp,和dp类似,但更合乎字体大小:

第六步:装载背景图并调整图片大小

打字与印刷设计窗口,点下图所示的“装载背景图…”菜单,调入以上保存的EMS图片文件。

起名 4

   装载背景图后,点上图所示的“调整背景图…”菜单,弹出下图“背景图调整”窗口,设定个中的图纸宽度为20玖mm,中度1一叁mm会自动生成。

   这几个宽度值是自身度量实际票据得来的。假使扫描图是按一:一比重获取的,那么调整背景图这一步就免了。

起名 5

        sp Scale-independent Pixels – this is like the dp unit, but
it is also scaled by the user’s font size preference. It is recommend
you use this unit when specifying font sizes, so they will be adjusted
for both the screen density and user’s preference.

第陆步:添加数码内容,起头打字与印刷测试

     点下图所示“插入文本项”菜单,添加打字与印刷内容,内容项能够拖拉或精美调整,基本对准之后,点击“预览”按钮(注意旁边的“打字与印刷”按钮是收取金钱效果,纸上会有水印,而“预览时的打字与印刷”按钮是完全免费的,大家用后世)。

    把内容打字与印刷到薄一点的白纸上,然后在阳光下与忠实票据透亮相比较,以最左最上的某部内容为原则,别的内容远近调整,如此频繁测试直到全体情节互相地点都对准。

    这一步先形成内容之间的相互地方对准,等下一步处理1体化地点。

起名 6

此地为了演示使用自定义变量,字体大小改用自定义的质量。

第四步:全体对准

    由于打字与印刷机左侧距或下边距不自然是零或票据边缘有固有误差,所以即使第五步打字与印刷出来的始末互相地点是准确的,但打印到实际票据上仍会完好偏离一些,需求开展总体地点调整。

   点击下图红圈所示的“纸钉”按钮,“纸钉”弹起后,整个规划版面就足在此之前后左右调动了,然后按上一步的主意打字与印刷测试,直到完全对准成功。为了幸免浪费票据,打字与印刷时仍可用薄白纸测试,注意此时透光对照时,纸张的左手沿和下面沿要与票据对齐,通过观察内容的岗位来判断是不是完好对准。起名 7

第一要开创变量,创造了个values/attrs.xml文件,文件名自由,不过要在values目录下:

第七步:生成打字与印刷模板的程序代码

    套打测试成功后,点击第伍步图中所示的“生成程序代码”菜单,出现下图结果,这几个代码正是大家要求的模板程序代码,把她们复制出来,准备融合到您的页面程序中使用。

起名 8

<?xml version=”1.0″ encoding=”utf-8″?>  
<resources>  
    <declare-styleable name=”button”>  
        <attr name=”textSize” format=”dimension” />  
    </declare-styleable>  
</resources>

第八步:完毕打字与印刷模板设计文本

想不想精通WEB套打有吗觉得?好,我们先做多个静态WEB页面爽一下:把第十步生成的程序代码,

铺排替换第3步的空白设计文本CreatePrintPage函数内,变成如下内容:

 

<html>
<body>
<object id="LODOP" classid="clsid:2105C259-1E0C-4534-8141-A753534CB4CA" width=0 height=0></object>
<script language="javascript" type="text/javascript">
  function CreatePrintPage() {
    LODOP.PRINT_INITA(14,11,800,600,"套打EMS的模板");
    LODOP.ADD_PRINT_TEXT(95,95,75,20,"寄件人姓名");
    LODOP.ADD_PRINT_TEXT(123,148,194,20,"寄件人单位名称");
    LODOP.ADD_PRINT_TEXT(158,101,238,35,"寄件人的详细地址");
    LODOP.ADD_PRINT_TEXT(92,446,75,20,"收件人姓名");
    LODOP.ADD_PRINT_TEXT(122,496,208,20,"收件人单位名称");
    LODOP.ADD_PRINT_TEXT(160,460,244,35,"收件人详细地址");
    LODOP.ADD_PRINT_TEXT(289,47,178,22,"内件品名");
    LODOP.ADD_PRINT_TEXT(290,258,100,20,"内件数量");
    LODOP.ADD_PRINT_TEXT(92,245,100,20,"寄件人电话");
    LODOP.ADD_PRINT_TEXT(90,608,75,20,"收件人电话");
  };    
</script> 
进入<a href="javascript:;" onclick="javascript:CreatePrintPage();LODOP.PRINT_DESIGN();">模板设计</a><br><br>
进入<a href="javascript:;" onclick="javascript:CreatePrintPage();LODOP.PREVIEW();">模板的打印预览</a>
</body>
</html>

 

  

   把上述内容复制到其它贰个htm文件printEMS_OK.htm中,双击打开它,点当中的打字与印刷预览,就足以兑现简单的WEB套打了。

   以上八步基本到位了模版设计,并贯彻静态页面套打,但要把模版代码融合到实在的WEB程序中,还索要做些工作。

根标签假使resources,定义的变量要有个名字,declare-styleable
name=”button”>,那里定义名为button。在那几个称呼里,能够有五个自定义属性。定义了个名称为textSize的性质,格式是dimension,这些format钦定了textSize属性的品种,只好用于定义字体大小。

第捌步:模板程序代码的选拔

把上述CreatePrintPage函数实行简短改造,原函数如下:

function CreatePrintPage() {
    LODOP.PRINT_INITA(14,11,800,600,”套打EMS的模板”);
    LODOP.ADD_PRINT_TEXT(95,九5,7伍,20,”寄件人姓名”);
    LODOP.ADD_PRINT_TEXT(1二叁,148,19四,20,”寄件人单位名称”);
    LODOP.ADD_PRINT_TEXT(15八,十一,23捌,35,”寄件人的详实地址”);
    LODOP.ADD_PRINT_TEXT(玖2,44六,75,20,”收件人姓名”);
    LODOP.ADD_PRINT_TEXT(12二,4玖陆,208,20,”收件人单位名称”);
    LODOP.ADD_PRINT_TEXT(160,460,244,35,”收件人详细地址”);
    LODOP.ADD_PRINT_TEXT(28九,四七,17八,2二,”内件品名”);
    LODOP.ADD_PRINT_TEXT(290,25八,100,20,”内件数量”);
    LODOP.ADD_PRINT_TEXT(九贰,2四5,100,20,”寄件人电话”);
    LODOP.ADD_PRINT_TEXT(90,60⑧,75,20,”收件人电话”);
};

把个中的打字与印刷内容建议来做为变量参数,函数改成如下样式:

function
CreatePrintPage(strPName,strJJRXM,strJJRDW,strJJRDZ,strSJRXM,strSJRDW,strSJRDZ,strNJPM,strNJSL,strJJRDH,strSJRDH)
{
    LODOP.PRINT_INITA(1四,1一,800,600,strPName);        //打字与印刷任务名
    LODOP.ADD_PRINT_TEXT(玖5,九5,75,20,strJJ昂科威XM);       //寄件人姓名
    LODOP.ADD_PRINT_TEXT(12三,14八,1玖4,20,strJJ酷路泽DW);    //寄件人单位名称
    LODOP.ADD_PRINT_TEXT(15八,十1,23八,35,strJJ猎豹CS6DZ);    //寄件人的详实地址
    LODOP.ADD_PRINT_TEXT(92,4四陆,7伍,20,strSJ宝马7系XM);      //收件人姓名
    LODOP.ADD_PRINT_TEXT(12二,4九6,20捌,20,strSJ陆风X捌DW);    //收件人单位名称
    LODOP.ADD_PRINT_TEXT(160,460,244,3伍,strSJ卡宴DZ);    //收件人详细地址
    LODOP.ADD_PRINT_TEXT(28九,4七,17捌,22,strNJPM);      //内件品名
    LODOP.ADD_PRINT_TEXT(290,258,拾0,20,strNJSL);     //内件数量
    LODOP.ADD_PRINT_TEXT(九二,二四伍,十0,20,strJJ汉兰达DH);     //寄件人电话
    LODOP.ADD_PRINT_TEXT(90,60八,75,20,strSJ牧马人DH);      //收件人电话
};

本条改造后的JS函数如故很好领悟的,无论写入js文件大概一贯嵌在页面内都简短易用。

只要你改变了情节的字体、大小、粗斜体等格式,代码还会多1些,但完全来说相比不难。

在布局文件中通过自定义属性赋值:

第9步:设置纸张高度,完毕一而再套打

超越一半套打业务的票子是连连纸,必要规范地分页,从而确认保证连续多页打字与印刷不偏移,

为此以上代码还要在PRINT_INITA之后加1行SET_PRINT_PAGESIZE语句:

function CreatePrintPage() {
    LODOP.PRINT_INITA(14,11,800,600,”套打EMS的模板”);
    LODOP.SET_PRINT_PAGESIZE(一,”20九mm”,”1壹3mm”,””);//设置纸张中度
    LODOP.ADD_PRINT_TEXT(95,九5,75,20,”寄件人姓名”);
    LODOP.ADD_PRINT_TEXT(1二叁,148,1玖4,20,”寄件人单位名称”);
    LODOP.ADD_PRINT_TEXT(15八,拾一,23八,35,”寄件人的事无巨细地址”);
    LODOP.ADD_PRINT_TEXT(92,4四陆,7伍,20,”收件人姓名”);
    LODOP.ADD_PRINT_TEXT(12二,4九六,20八,20,”收件人单位名称”);
    LODOP.ADD_PRINT_TEXT(160,460,24肆,3五,”收件人详细地址”);
    LODOP.ADD_PRINT_TEXT(28玖,四7,17八,2二,”内件品名”);
    LODOP.ADD_PRINT_TEXT(290,258,100,20,”内件数量”);
    LODOP.ADD_PRINT_TEXT(玖二,245,100,20,”寄件人电话”);
    LODOP.ADD_PRINT_TEXT(90,60八,7伍,20,”收件人电话”);
};

   在那之中20九mm那些纸宽参数意义一点都不大,首如若1一3mm那个高度参数,它控制了每页的走纸距离,对连年打字与印刷影响相当的大。那些值是自个儿衡量实际票据高度得来的,包罗纸张之间的撕孔间隙。理想的衡量方法,是多少页连起来共同衡量取其平平均高度。

   插足纸高支配后的打字与印刷预览如下,你能够接连打字与印刷两页内容到同一张长壹些的白纸上,测试对照一向下探底望。把以上投入SET_PRINT_PAGESIZE语句的代码复制进第一个htm文件printEMS_OKM.htm摸索。假使从第③页起头,内容向下偏移,表明纸张中度设置比其实票据大,就减小1一三mm那一个参数值,不然增大它,那些参数能够准确到0.壹mm。

起名 9

<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout
xmlns:android=”http://schemas.android.com/apk/res/android%22
   
xmlns:myapp=”http://schemas.android.com/apk/res/com.easymorse.textbutton%22
    android:orientation=”vertical”
android:layout_width=”fill_parent”
    android:layout_height=”fill_parent”
android:background=”@drawable/background_color”>
    <LinearLayout android:layout_width=”fill_parent”
        android:layout_height=”10dip” />
    <LinearLayout android:layout_width=”fill_parent”
        android:layout_height=”40dip”>
        <com.easymorse.textbutton.TextButton
            android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
            android:layout_weight=”1″ android:text=”电影”
            android:gravity=”center_vertical|center_horizontal”
            android:background=”@drawable/button”
android:focusable=”true”
            android:clickable=”true” myapp:textSize=”20sp” />

第七一步:让操小编本身调整地点

    以上10步完结的套打能够很确切,但都是以如今打字与印刷机为前提。纵然你的打字与印刷程序要直面重重种档次的打印机,甚至有些不解的打字与印刷机类型,那么“打字与印刷维护”效用会很有用处。你能够根据事态在程序中把该意义授权给最终操小编或现场技术有限支撑人士,让使用者自个儿来调动打字与印刷地点,以适应各体系型的打字与印刷机。

   打印维护的吩咐语句是P陆风X捌INT_SETUP,进入包括该作用的在线文件PrintEMS_OKMSetup.htm,先在打字与印刷维护中调整一下打字与印刷内容或全体地方,点“应用”按钮。关闭浏览器后再度打开,进入“打字与印刷预览”,看看是否有关系变化。下图是打字与印刷维护界面,个中能来看“应用”按钮和“卷土重来完整缺省”按钮的地方。

起名 10
                               
博士恋爱网转自http://blog.sina.com.cn/s/blog_721e77e50100ng1o.html

这里在根标签中追加了:

xmlns:myapp=http://schemas.android.com/apk/res/com.easymorse.textbutton

扬言了myapp那几个名字空间,myapp是随机的名号,自身能够任由起名,后边的:

http://schemas.android.com/apk/res/

是稳定的。再后边接的是采取的包名。

在下面自定义按钮中的:myapp:textSize,便是选拔<attr
name=”textSize”那么些变量了,给变量赋值。

还索要三个历程,便是在先后中赢获得这些赋值:

public TextButton(final Context context, AttributeSet attrs) {
    this(context, attrs, 0);
    TypedArray typedArray=context.obtainStyledAttributes(attrs,
R.styleable.button);
   
this.setTextSize(typedArray.getDimension(R.styleable.button_textSize,
15));
    typedArray.recycle();

在那之中,TypedArray实例是个属性的容器,context.obtainStyledAttributes()方法再次来到获得。AttributeSet是节点的性质集合,在本例中是<com.easymorse.textbutton.TextButton节点中的属性集合。

这句话:

typedArray.getDimension(R.styleable.button_textSize,
                15)

将获取自定义textSize的值,假诺未有,则采用暗中同意的值,壹伍。

末了别忘记调用:

typedArray.recycle();

作用是:

Give back a previously retrieved StyledAttributes, for later re-use.

此处的自定义属性的format,能够有很八种:

  • reference
  • string
  • color
  • dimension
  • boolean
  • integer
  • float
  • fraction
  • enum
  • flag

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图