我有一个Rails应用程序,用于存储杂志订阅者的地址。它应该允许在文本文件中下载地址作为标签,以便可以通过点阵打印机打印。
每个订阅者都有name
,name_prefix
(“先生”,“小姐”等),address
,area
,zipcode
,等
输出应采用以下格式:
g51/b18468 Postgg On 30/05/2013 N51/b39897 Postgg On 30/05/2013 LR51/b23428 Postgg On 30/05/2013
Rgv. XXXXX Mr. bBnMbNNbN.M Bro. bBRbgbM .S,
KbgbNg bSSgMBLY Og gOg, LOT 92, KbMPUNg gRbgg gOMMUNnTY ggNTRg,
52, gLN. TnMUR, BbTU 4, 43950 4, LORONg SS 23/6g,
POST BOX 20, 43007 KbgbNg SUNgbn PgLnK 47400 PgTbLnNg gbYb,
MbLbYSnb SgLbNgUR SgLbNgOR, W.MbLbYSnb
MbLbYSnb MbLbYSnb
ML51/b13179 Postgg On 30/05/2013 W51/b41363 Postgg On 30/05/2013 Lg51/b29053 Postgg On 30/05/2013
Bro. bBRbgbM .V Bro. bLbPPbN Pbstor. bLgRgg PRbgbSbM
NO:18,PgRSnbRbN NO.60, LORONg SgRbn PgRMbn 9, 1-2-2, MggbN nNTbN bPbRTMgNT,
RnSgbg .7 TbMbN SgRbn PgRMbn, gbLbN 1/21g Ogg gbLbN gOMBbK
TbMbN RnSgbg 34300, BbTbN SgRbn, 53000 KUbLb LUMPUR
30100 nPOg, PgRbK PgRbK MbLbYSnb
MbLbYSnb MbLbYSnb
LR510b13172 Postgg On 30/05/2013 ML51/b9877 Postgg On 30/05/2013 LR51/b9905 Postgg On 30/05/2013
Sns. bLLbMbg (b) NgSbM Bro. bLVnN bNbNg .b Mrs. bNnTgb VngTOR
NO:44,gbLbN gbMbn NO:3,gbLbN TgRbTbn 3 7,gbLbN PbRn
TbMbN TbPbg gbYb TbMbN SbRn,TgRbTbn PbRn gbRggNS
35000 TbPbg 44000 KUbLb KUBU BgbRU nPOg,30100
PgRbK, SgLbNgOR PgRbK
MbLbYSnb MbLbYSnb MbLbYSnb
ML51/b13180 Postgg On 30/05/2013 ML51/b13203 Postgg On 30/05/2013 g51/b9942 Postgg On 30/05/2013
Bro. bNTONY Bro. bNTONYSWbMY Pbstor. bROKnbNbTgbN
NO:399,LORONg KgNbVn 3/2b LbgbNg gUSUN gURnbM NO:M4 g/7
TbMbN KgNbRn 42700 BbNTnNg gbLbN PbNgbN nNgbg 4/1b
09000 KULnM SgLbNgOR g.g PbNgbN nNgbg
Kggbg MbLbYSnb 55100,KUbLb LUMPUR
MbLbYSnb MbLbYSnb
我写了名字和地址。
所以基本上每个标签都是这样的:
<MemberCode> Posted on <Date>
Mr. Steve Robinson
No: 35, Buther Street,
Kamaraj Nagar, Avadi
Chennai - 600071
仅当列宽度高于标签的格式时,打印机才会在标签纸上打印。
如何从Rails打印此类文本文件?
我已经尝试了Prawn/Labels PDF创建者,但PDF打印很糟糕。
如何做到这一点?
更新:
我看到投票说不清楚。 我想单击一个按钮,该按钮将下载包含指定格式的所有地址的文本文件。我想以这种三列格式打印地址,具有精确的列宽和每行的行数。我不知道该怎么做。
答案 0 :(得分:2)
如果可以保证列中每行的宽度不超过列的宽度,则可以使用sprintf
创建填充字符串。每个列的宽度为37个字符,因此要打印三列,命令将为sprintf("%-37s%-37s%-37s", col1,col2,col3)
。您必须为每个字段重复此操作。假设你已经为每一行提供了一个字符串。您需要从数据中生成每个字符串,例如将前缀与名称连接起来。