2010-03-12 38 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