当我尝试使用Prawn插入图像(PNG为72dpi)时,如下所示:
image "#{Rails.root}/public/images/pdf/logo.png"
Prawn插入图像,但将其缩放约30%,这使其模糊(并且更大。)我在文件中没有任何其他内容,PDF初始化是相当标准的:
super(:page_layout => :portrait,
:left_margin => 0.5.in,
:right_margin => 0.5.in,
:top_margin => 1.in,
:bottom_margin => 0.5.in)
根据文档,Prawn应该将图片插入文档而不做任何修改。为什么这张图片会重新调整大小?
注意: 我注意到边界框也比它们应该更大(与我的图像的比例相同)。
答案 0 :(得分:6)
如果有帮助,你可以尝试传递图像实际看到的宽度和高度
<强>虾::图片强>
公共实例方法 image(file,options = {})单击以切换源
将文件名的图像添加到当前页面。目前只支持JPG和PNG文件。
注意:使用alpha通道渲染PNG时,Prawn非常慢。该 那些不介意安装RMagick的人的解决方法是使用:
github.com/amberbit/prawn-fast-png
参数:
文件的路径或响应#
的对象选项:
:一个数组[x,y],其中包含图片左上角的位置。
:位置其中一个(:左,中,右)或x偏移
:vposition 其中一个(:top,:center,:center)或y-offset
:高度图像的高度[图像的实际高度]
:宽度图像的宽度[图像的实际宽度]
:缩放按比例缩放图像的尺寸
:适合按比例缩放图像尺寸以适应[宽度,高度]
Prawn::Document.generate("image2.pdf", :page_layout => :landscape) do
pigs = "#{Prawn::BASEDIR}/data/images/pigs.jpg"
image pigs, :at => [50,450], :width => 450
dice = "#{Prawn::BASEDIR}/data/images/dice.png"
image dice, :at => [50, 450], :scale => 0.75
end
如果只提供:width /:height中的一个,则图像将按比例缩放。提供两者时,图像将被拉伸以适应尺寸而不保持纵横比。
如果:提供at,图像将放在当前页面中,但文本位置不会更改。
如果不是显式文件名,而是将具有read方法的对象作为文件传递,则可以嵌入来自IO对象的图像以及与它们相似的事物(包括Tempfiles和open-uri对象)。
require "open-uri"
Prawn::Document.generate("remote_images.pdf") do
image open("http://prawn.majesticseacreature.com/media/prawn_logo.png")
end
此方法返回一个图像信息对象,可用于在需要时检查图像对象的尺寸。 (参见:Prawn :: Images :: PNG,Prawn :: Images :: JPG)