2010-03-12 43 views
2

我需要为我正在开发的Ruby on Rails项目生成格式化的文本装箱单。我正在考虑使用Ruport或只是将它自己格式化为字符串并将其输出为文本。唯一的挑战是适当地调整所有输出。它需要看起来像这样,总是正确对齐。任何建议?Ruby中的文本格式(装箱单)

Company Name 
(T) 1-800-123-1234 
(E) [email protected] 

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 
+1

似乎是一个简单的工作为'sprintf'。它需要比这更复杂吗? – FMc 2010-03-12 14:47:05

+0

为它找到了一个不错的小宝石。尽管文档很轻松。 http://github.com/ryanwood/slither – 2010-03-12 20:33:14

回答

5

至于FM已经建议,你可以使用sprintf

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

如果你需要一些更复杂的,可以尝试使用一些标准的模板引擎,如erb ...

0

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

如果要输出等宽字体文本,请使用空格来格式化所有内容。您可能需要跟踪您使用了多少空白。这确保您可以简单地将适当数量的空格插入到下一个块中。

+0

是的,如果它是HTML,PDF等,这不会是一个问题。它需要是文本文件,所以我特意寻找格式化文本的方法。添加空格是好的,但我需要做一些计算来排列所有东西,因为每个字段中的字符数量都会改变。我想知道是否有一个工具可以做到这一点,或者我是否应该自己构建它。看起来像一个共同的足够的任务。 – 2010-03-12 14:16:59

0

编辑:我没有看到关于需要生成文本文件的评论,直到我写这个。在删除它之前,我会稍微留下它,以防万一它变得有用。


Ruport可能是矫枉过正。 Prawn是同一作者的PDF作家库,非常轻巧且易于使用。 (比Ruport使用的旧的PDF::Writer库要容易得多,事实上,Gregory Brown写下了Prawn的具体目标是取代Ruport中的PDF :: Writer)。

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

由于您使用的是Rails,因此您可能也会对Prawnto Rails plugin感兴趣,它会在Rails中将Prawn注册为视图引擎,并允许您呈现与呈现HTML完全相同的PDF。还有一个Railscast which covers Prawn and Prawnto和一个corresponding ASCIIcast

+0

我已经看过虾另一个项目,它绝对非常整洁。 PDF虽然不适用于这种情况。基本上,我产生了数以千计的装箱单,并将它们下载到装运过程中。基本的文本文件是理想的,因为它们非常小(并且容易压缩)。 PDF将极大地增加我的文件大小以及处理时间。 – 2010-03-12 14:40:39