Ruby中的文本格式(适用于装箱单)

时间:2010-03-12 13:57:26

标签: ruby-on-rails ruby formatting packing ruport

我需要为我正在处理的Ruby on Rails项目生成格式化文本打包单。我正在考虑使用Ruport或者只是将自己格式化为字符串并将其输出到文本中。唯一的挑战是适当地证明所有输出。它需要看起来像这样,总是正确对齐。有什么建议吗?

Company Name
(T) 1-800-123-1234
(E) info@company.com

BILL TO: CUSTOMER NAME                   SHIP TO: CUSTOMER NAME
123 Some Street                          321 Some Street
Address etc.                             Address etc.

Date: 2010-03-12 16:30
Payment Number: 1234-123456

LN  NAME             SKU           DESCRIPTION             QTY    PRICE      TOTAL
----------------------------------------------------------------------------------
001 Product name     GUDB 012 HGQ  product description     2      52.99     105.98
         - Color

3 个答案:

答案 0 :(得分:5)

正如FM已建议的那样,您可以使用sprintf

"%10s %-10s %10s" % ['abc', 'def', 'ghi'] # use negative numbers for left alignment
#=> "       abc def               ghi"

如果您需要更复杂的东西,请尝试使用一些标准的模板引擎,例如erb ......

答案 1 :(得分:0)

如果输出格式为HTML,请使用CSS制作打印介质样式表。这种布局相对容易实现。

如果要输出等宽文本,请使用空格格式化所有内容。您可能需要跟踪已使用的空白量。这可以确保您只需将适当数量的空格插入下一个块。

答案 2 :(得分:0)

编辑:在我写完这篇文章之前,我没有看到关于需要生成文本文件的评论。

。在删除它之前,我会暂时搁置它,以防它变得有用。


Ruport可能有点矫枉过正。 Prawn是同一作者的PDF编写器库,非常轻量级且易于使用。 (比Ruport使用的旧PDF::Writer库容易得多。实际上,Gregory Brown写了Prawn,其具体目标是替换为Ruport中的PDF :: Writer。)

我甚至记得有人为Prawn创建了一个轻量级的模板引擎,但不幸的是我不记得是谁或者它叫什么。但是Prawn邮件列表和IRC频道非常友好和乐于助人,他们可能知道。

由于您正在使用Rails,您可能也对Prawnto Rails plugin感兴趣,它将Prawn注册为Rails中的视图引擎,并允许您以与呈现HTML完全相同的方式呈现PDF。还有Railscast which covers Prawn and Prawntocorresponding ASCIIcast