我需要为我正在处理的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
答案 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 Prawnto和corresponding ASCIIcast。