LODOP打印项水平居中

Wesley13
• 阅读 779

LODOP控制打印项水平居中,可以用如下语句,该语句控制的是打印项本身在纸张中水平居中。
LODOP.SET_PRINT_STYLEA(0,"Horient",2);
这个根据大的打印项本身的宽度,如果打印项本身内部不是居中的,那么加了这句,内容也不会居中。

之前有博文介绍过打印项在纸张中受到的各种边距:
LODOOP中的各种边距 打印项、整体偏移、可打区域、内部边距

例如,打印项的左边距,是指打印项与纸张之间的距离,打印项内部如果也有左边距,例如样式等造成的,那么打印项内容和纸张之间的距离,就不是单纯的额打印项左边距,而是打印项左边距加上内容内部的左边距。
同理,打印项水平居中这个样式,也会受打印项宽度的影响。

其他:此文不再对整体偏移和可打区域做解释,LODOP不同打印机出现偏移问题,注意在实际代码里不要设置整体偏移,可针对不同客户端进行打印维护整体偏移,调整结果只对客户端本地本机影响。Lodop打印维护PRINT_SETUP本地缓存ini文件

代码:
1.第一页的打印项是 根据实际超文本打印项宽度设置的打印项宽度,所以设置打印项在纸张中水平居中后,打印项大致是在纸张中水平居中的。
2.第二页打印项 打印项宽度设置比实际打印项内容的宽度要大一些,如图中的打印设计,进入打印设计后,选中该超文本打印项,可以看到右侧有空白部分。所以设置打印项在纸张中水平居中后,打印项虽然在纸张中水平居中了,但是打印项中的内容没有针对纸张居中。

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>WEB打印控件LODOP</title>
<script language="javascript" src="LodopFuncs.js"></script>
</head>
<body>
<div id="div1"><!--一个三行三列的table表格-->
<table width="300" border=1 style="border:solid 1px black;border-collapse:collapse" bgcolor="#5dd2e3">
<tr>
    <td width="100">lodop</td>
    <td width="100">c-lodop</td>
    <td width="100">c-lodop</td>
</tr>
<tr>
    <td width="100" >text</td>
    <td width="100">html</td>
    <td width="100">html</td>
</tr>
<tr>
    <td width="100">lodop</td>
    <td width="100">c-lodop</td>
    <td width="100">html</td>
</tr>
</table>
</div>
</div>
<a href="javascript:prn1_dg()">打印设计查看打印项</a><br>
<a href="javascript:prn2_preview()">打印预览2</a><br>
<script language="javascript" type="text/javascript">   
        var LODOP; //声明为全局变量 
    function prn1_dg() {
        LODOP=getLodop(); 
        LODOP.PRINT_INIT("");
        LODOP.SET_PRINT_PAGESIZE(1,1200,500,"");
        LODOP.ADD_PRINT_HTM(25,30,411,90,document.getElementById("div1").innerHTML);
        LODOP.SET_PRINT_STYLEA(0,"Horient",2);
        LODOP.PRINT_DESIGN();
    };
    function prn2_preview() {
        LODOP=getLodop(); 
        LODOP.PRINT_INIT("");
        LODOP.SET_PRINT_PAGESIZE(1,1200,500,"");
        LODOP.ADD_PRINT_HTM(25,30,300,90,document.getElementById("div1").innerHTML);
        LODOP.SET_PRINT_STYLEA(0,"Horient",2);
        LODOP.NEWPAGE();
        LODOP.ADD_PRINT_HTM(25,30,411,90,document.getElementById("div1").innerHTML);
        LODOP.SET_PRINT_STYLEA(0,"Horient",2);
        LODOP.PREVIEW();    
    };
</script> 
</body>

图示:
1.超文本打印项宽度是实际的内容的宽度。
2.超文本打印项宽度不是实际的内容宽度,打印项内部存在空白区域。
设置打印项相对于纸张水平居中后,第二个宽度较大的,内容不会相对于纸张居中。

LODOP打印项水平居中

ADD_PRINT_TEXT纯文本中,内容在文本框中默认是居左的,如果只设置打印项居中,那么文本框存在内部居中,内容也不会相对于纸张居中,所以需要加上文本框内容相对于文本框居中,这样纯文本就能在纸张中居中。
纯文本在纸张中居中:
LODOP.SET_PRINT_STYLEA(0,"Alignment",2);//文本框里 内容对于文本框居中
LODOP.SET_PRINT_STYLEA(0,"Horient",2);//打印项在纸张中水平居中
代码:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>WEB打印控件LODOP</title>
<script language="javascript" src="LodopFuncs.js"></script>
</head>
<body>
<a href="javascript:prn1_dg()">打印设计</a><br>
<script language="javascript" type="text/javascript">   
        var LODOP; //声明为全局变量 
    function prn1_dg() {
        LODOP=getLodop(); 
        LODOP.PRINT_INIT("");
        LODOP.SET_PRINT_PAGESIZE(1,1200,500,"");
        LODOP.ADD_PRINT_TEXT(29,121,100,20,"文本");
        LODOP.SET_PRINT_STYLEA(0,"Alignment",2);
        LODOP.SET_PRINT_STYLEA(0,"Horient",2);
        LODOP.PRINT_DESIGN();
    };
</script> 
</body>

图示:

LODOP打印项水平居中

由于LODOP生成的条码二维码,设置多宽并不一定是多宽,受合计值的影响,因此条码如果数值不同,在纸张中居中比较难控制,无法做到条码在纸张中居中,最好留够最大条码的宽度,放在一定区域内。

二维码可以通过打印设计找到在纸张中的居中点,然后设置具体的版本号,统一所有二维码的大小。
相关博文:Lodop打印条码二维码设置多宽不一定是多宽、Lodop打印二维码内容长度不同如何大小相同

简短问答:
居中打印
1. 打印项居中 参考样例23 http://www.c-lodop.com/demolist/PrintSample23.html
LODOP.SET_PRINT_STYLEA(0,"Horient",2);//打印项在纸张中水平居中
LODOP.SET_PRINT_STYLEA(0,"Vorient",2);//打印项在纸张中垂直居中
2. add_pirnt_text纯文本打印项里面的内容居中
纯文本设置Alignment设置水平居中LODOP.SET_PRINT_STYLEA(0,"Alignment",2);//文本框里 内容对于文本框居中,
不支持垂直居中, 具体参考技术手册;
3.AlignJustify设置纯文本两端对齐和条码文字对齐
LODOP.SET_PRINT_STYLEA(0,"AlignJustify",1);//纯文本两端对齐
LODOP.SET_PRINT_STYLEA(0,"AlignJustify",2);//设置条码下方的文字相对于条码本身居中
4.Html 通过css 控制 参考样例2 ,10;http://www.c-lodop.com/demolist/PrintSample10.html

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
3年前
JavaScript队列
队列队列是遵循FIFO(FirstInFirstOut,先进先出)的一组有序的项。在计算机科学中,最常见的是打印队列,比如我需要打印五份文档,就先打开每个文档,再点击打印按钮,则每一个文档都会被发送到打印队列。第一个发送到打印队列的文档会首先打印,依次类推,直到打印完所有五篇文档。此外,需要说明一下的是,在linux中,FIFO是一种特殊的文
Wesley13 Wesley13
3年前
HTML中经常用到的对齐,居中方式
在编写一片网页时,我们经常需要使一些文本或者图片,盒子居中!但是在众多的写法里,那些才能使我们的目的最快,最有效的达到呢!居中也是有轴线之分的,水平轴,垂直于水平轴的轴,交叉轴。1盒子居中margin:auto;通常在这此行只有一个盒子的情况下使用\需要定宽\常规流和浮动不用\2文本居中   定义水平轴线对齐方式flexst
Stella981 Stella981
3年前
Lodop打印设计(PRINT_DESIGN)介绍
打印设计(PRINT\_DESIGN)界面上方有两栏菜单栏,举例说明(文本框,条码,图形等)。(1)第一排最左侧第一个功能,位置移动:控制里面元素微上下左右移动,每次移动一个px。(用于微调,普通调整可拖动调整元素位置,移动选中的单个或多个打印项)(2)第一排第二个功能,设置颜色。点击颜色方格的图标,可
Wesley13 Wesley13
3年前
OC之description
打印对象用%@,比如打印字符串对象:NSString\name@”haha”;NSLog(@”%@”,name);输出结果为:haha比如:Person\p\\Personalloc\init\;p.age20;p.name@”jack”;NSLog(@”%@”,p);会打印出对象
Wesley13 Wesley13
3年前
LODOP打印图片水平居中
其他居中,查看本博客相关博文:LODOP中打印项水平居中简短问答(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2Fhuaxie%2Fp%2F11988181.html)、图片也属于超文本打印项,因此如果想把图片居中,也需要图片本身内容相对于图片打
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
小万哥 小万哥
1年前
Python 集合(Sets)2
访问项您无法通过引用索引或键来访问集合中的项。但是,您可以使用for循环遍历集合项,或者使用in关键字检查集合中是否存在指定的值。示例,遍历集合并打印值:Pythonthisset"apple","banana","cherry"forxinthisset
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这