2012-01-13 117 views
1

我一直在使用html2ps来获取一些文本标签,以便在Dymo 450 Labelwriter打印机上正确打印。根据this page,您应该可以使用CSS调整页面大小。这里是我试过的CSS(在外部文件中,也试过它内联):html2ps - 如何打印小标签?

@page { 
     size: 28mm 85mm landscape; 
     margin: 0mm; 
    } 

但输出后记仍然是字母大小。我也能够做到用html2ps的-s选项缩放,但空间依然如此之大,无文本打印(只需一个空白标签出来)

html2ps -s .3 -L <url> 

我能做些什么来获得利润为零,输出正确的页面大小?

这里是输入HTML样本:

<div>Code: <b>SNHN1</b>&nbsp;&nbsp; PO: <b>035718</b>&nbsp;&nbsp;ln: <b>1</b><br>Desc: <div>US15 4" SOLID BRASS NO. 1 (SNHN1)******* HOUSE NUMBER SATIN NICKEL "1"<br></div>Remarks: <b>## CUSTOMER NAME 01/13</b><br><div>Vendor: HARDWARE COMPANY ETC...&nbsp;&nbsp; Rcvd: date and time...</div></div> 

而且它似乎是html2ps的不尊重在线:

page-break-after:always; 

感谢您的帮助。我还应该提到,我使用lp从ubuntu打印服务器进行打印。

回答

2

在工作中,我们使用wkhtmltoimage,wkhtmltopdf project的一部分,就是为了这个目的。我们使用的是400和双涡轮增压器400,而不是450。它们提供跨平台静态编译的二进制文件,因此不需要编译。即便如此,旧版本的wkhtmltopdf似乎在宇宙中可用。

在我们的案例中,我们将htmlbody尺寸设置为从打印机的DPI计算出的特定像素尺寸以及CUPS的一些模糊因子。例如,打印到30252个1.125x3.5地址标签时:然后

html, body { 
    margin: 0px; 
    border: 0px; 
    padding: 0px; 
    height: 290px; 
    width: 958px !important; 
    max-width: 958px !important; 
    overflow: hidden; 
} 

这些像素尺寸用适当的命令行匹配切换到强制特定的高度和宽度。生成的图像可以通过lplpr直接送入打印机。您还可以通过更改打印方向(-o landscape-o orientation-requested=N,请参阅the docs)并交换尺寸来侧向转动标签。

将图像传递给CUPS时,您可能需要手动指定图像的DPI。我们通过-o ppi=300明确地这样做。

+0

这与多个页面(同一文件中的多个标签)是如何工作的? – jjclarkson 2012-01-16 19:16:06

+0

我们从来没有*故意*做到这一点。我们为每个标签生成一个图像,将它放在'lpr',然后生成下一个图像。如果在适当的轴上生成两倍尺寸的图像,它*可以*正常工作,但需要相当多的摆弄才能找到合适的宽度和边距,以便在没有对齐的正确位置将其折断烦恼。您也可能需要使用驱动程序选项。如果图像太大,驱动程序会尝试将其缩小(坏)或将其打印在多个标签上(良好)。 – Charles 2012-01-16 19:19:32

+0

我想我想避免因为这个原因使用图片。我的输出是全部文本,并且通常会溢出到第二个标签上,对于少数情况下我的可变内容可能会发生这种情况,这不会成为问题。我想我会继续坚持使用html2ps的答案,因为我认为这是一个非常通用的库,可以将纯html转换为打印文件。 – jjclarkson 2012-01-16 22:28:59