如何在android中创建POS打印机尺寸的账单?

时间:2015-04-03 09:37:43

标签: android printing itext

我使用iText为账单创建了pdf。 我想在POS打印机上打印这个账单。 POS打印机纸张尺寸为58mm。 我的PDF看起来像A4尺寸。 如何根据POS打印机尺寸重新调整此页面的大小?

而且,如果产品超过100意味着,我必须使用新页面。 所以会有两页。 对于这种情况,我如何用单张纸打印帐单。

否则还有其他方法可以使用Android手机或平板电脑创建账单和打印吗?

1 个答案:

答案 0 :(得分:1)

创建这样的文档时:

Document document = new Document();

创建一个文档,其中所有页面都具有默认大小。默认大小为A4。

有一个名为PageSize的类包含许多不同的标准大小。例如,如果您想创建一个包含美国LETTER大小的页面,您可以像这样创建Document

Document document = new Document(PageSize.LETTER);

你面临两个问题:

  1. 您的账单没有标准尺寸。
  2. 您事先并不知道帐单的大小。
  3. 解决问题1很简单:Document类接受Rectangle参数。您可以像这样创建自己的页面大小:

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

    在这种情况下,您将拥有4 x 10英寸的页面:

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

    您可以通过将58 mm转换为pt:164.409448819 pt

    来解决您的第一个问题

    解决第二个问题更加困难。一种方法是创建一个非常长的文档。 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?