7

当我尝试使用 Prawn 插入图像(72dpi 的 PNG)时,如下所示:

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 应该在不做任何修改的情况下将图片插入到文档中。为什么会发生此图像大小调整?


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

4

1 回答 1

6

您可以尝试传递图像实际的宽度和高度,看看是否有帮助

大虾::图片

公共实例方法 image(file, options={}) 点击切换源

将文件名处的图像添加到当前页面。目前仅支持 JPG 和 PNG 文件。

注意:Prawn 在渲染带有 Alpha 通道的 PNG 时非常慢。对于那些不介意安装 RMagick 的人来说,解决方法是使用:

github.com/amberbit/prawn-fast-png

论据:

文件的文件路径或响应 # 的对象

选项:

: 在数组 [x,y] 中,图像左上角的位置。

:position (:left, :center, :right) 或 x 偏移之一

:vposition (:top, :center, :center) 或 y 偏移之一

:height图片的高度【图片的实际高度】

:width图片的宽度【图片的实际宽度】

:scale按比例缩放图像的尺寸

:fit按比例缩放图像的尺寸以适合 [width,height]

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 提供,图像将放置在当前页面中,但文本位置不会改变。

如果不是显式文件名,而是将具有读取方法的对象作为文件传递,则可以嵌入来自 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)

于 2013-09-19T03:09:00.417 回答