我正在使用Prawn在我的Rails应用中呈现PDF。
出于某种原因,我的电话号码总是在右边缩进2(?)个空格。
有人能告诉我这里缺少什么吗?所有三个值都保存为我的SQLite数据库中的字符串,并且没有我知道的空格字符。
电子邮件和网址值始终与右侧整齐对齐。
def show_sender_details
text "#{p.telephone}\n#{p.email}\n#{p.url}", :align => :right
end
有人可以帮忙吗?
答案 0 :(得分:2)
电话号码总是在右侧缩进,因为在text
方法中使用了:align => :right
,因此所有文字字符串都与右侧对齐。
您可以尝试使用左对齐的text_box
方法,并通过从页面的顶部和右边缘(bounds.right和bounds)定义其左上角的缩进,将此框手动地放在页面上。最高价值)。像这样的东西(完整的工作示例):
require 'prawn' require 'ostruct' p = OpenStruct.new( :telephone => "+1-201-555-2233", :email => "test@example.com", :url => "http://example.com") Prawn::Document.generate('simple_text.pdf', :skip_page_creation => true) do start_new_page text_box("#{p.telephone}\n#{p.email}\n#{p.url}", :at => [bounds.right - 100, bounds.top - 100], :align => :left, :height => 50, :width => margin_box.width) end
答案 1 :(得分:1)
p.telephone
字段中确实存在一些杂散的空白。我正在用Prawn / Rails做类似的事情,所以我尝试了尽可能多的方法让它不能正确对齐,并且在字段中插入空格是我能够重现你的问题的唯一方法
即使在这种情况下它不你的具体问题,在你渲染它们之前,从你的电话号码(实际上也是其他字段)中删除空格可能是个好主意。 - 假设这是某个表单字段,你可以预期某些用户会意外地放入尾随空格。您可以在PDF代码中执行此操作,如下所示:
text "#{p.telephone.strip}\n#{p.email.strip}\n#{p.url.strip}", :align => :right
或者如果您愿意,可以在模型中执行此操作:
def telephone=(t)
write_attribute(:telephone, t.strip)
end
我个人喜欢第一个选项(在PDF视图代码中执行),因为我更喜欢存储用户输入的内容,并且只在必要时(在视图中)操纵他们的数据,但它确实倾向于稍微混淆了视图代码。
答案 2 :(得分:0)
好的,如果你的问题也与连字符有关,那么解决方法是使用Prawn Release> = 0.13.1(不是任何旧的1.0.0.rc)
答案 3 :(得分:0)
\r
个字符。不确定他们是如何进入那里的......(顺便说一句:在此期间我已经将我的应用程序从SQLite移到了MySQL。)
我需要做的就是删除这些字符:
telephone.tr("\r", "")