2015-04-03 57 views
3

我已经使用iText创建了账单的pdf。 我想用POS打印机打印这张账单。 POS打印机纸张尺寸将为58毫米。 我的PDF看起来像A4尺寸。 如何重新设置POS打印机大小的页面大小?如何在android中为POS打印机大小创建帐单?

而且,如果产品超过100个意思,我必须使用新的页面。 所以会有两页。 对于这种情况,我怎样才能在单张纸上打印帐单。

或者有没有其他方式可以使用android手机或平板电脑创建账单和打印?

回答

1

当你创建一个这样的文件:

Document document = new Document(); 

创建一个文件,该文件的所有页面的默认大小。默认大小是A4。

有一个名为PageSize的类包含许多不同的标准尺寸。举例来说,如果你想创建与美国字母大小页面,您可以创建Document这样的:

Document document = new Document(PageSize.LETTER); 

您面临着两个问题:

  1. 账单没有标准尺寸。
  2. 你不知道你账单的大小。

解决问题1很简单:Document类接受Rectangle参数。你可以这样创建自己的页面大小:通过转换58毫米

288 user units = 288 pt = 4 x 72pt = 4 inch 
720 user units = 720 pt = 10 x 72pt = 10 inch 

可以解决你的第一个问题:

Rectangle pagesize = new Rectangle(288, 720); 
Document document = new Document(pagesize); 

在这种情况下,你必须测量4×10英寸页转化为点:164.409448819点

解决第二个问题比较困难。一种方法是创建一个非常长的文档。 PDF文件的最大尺寸为14,400 14,400由用户单位,所以你可以这样创建矩形:

Rectangle pagesize = new Rectangle(164.41f, 14400); 

,如果你有一个法案,长于5.08米这将是令人惊讶。如果该PDF对于您的打印机来说太长,您可以将y位置存储在内容的末尾,然后再一次减小页面大小。

另一种方法是将所有内容添加到ColumnText对象,然后要求其高度列,并与之前计算出的高度的新创建的文档创建一个新的ColumnText对象。这个怎么做?我在这个问题的答案中解释了这一点:How to adjust the page height to the content height?

+0

谢谢先生。我将在您的项目中使用您的解决方案。先生,我将在我的项目中使用iText。不会出售我的项目。但要与我和我朋友的酒店一起使用。我需要为这位先生付款吗?我已经阅读了一些有关这个问题的答案。但我仍然担心我的情况。请删除我的恐惧回答先生.. – 2015-04-03 10:39:42

+0

决定性的答案只能通过查看具体情况提供。请通过以下地址之一联系iText Group:http://itextpdf.com/contact – 2015-04-03 11:04:28

+0

什么是使用PageSize.A6而不是使用Rectange的回合? – 2015-05-19 10:25:23