为什么Prawn会自动调整图像大小?

时间:2013-04-18 18:20:32

标签: ruby-on-rails pdf prawn

当我尝试使用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应该将图片插入文档而不做任何修改。为什么这张图片会重新调整大小?


注意: 我注意到边界框也比它们应该更大(与我的图像的比例相同)。

1 个答案:

答案 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)