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

Ala*_*ain 7 pdf ruby-on-rails prawn

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

image "#{Rails.root}/public/images/pdf/logo.png"
Run Code Online (Sandbox Code Playgroud)

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)
Run Code Online (Sandbox Code Playgroud)

根据文档,Prawn应该将图片插入文档而不做任何修改.为什么这张图片会重新调整大小?


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

MZa*_*oza 6

您可以尝试传递图像实际看到的宽度和高度,如果这有帮助

虾::图片

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

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

注意:使用alpha通道渲染PNG时,Prawn非常慢.那些不介意安装RMagick的人的解决方法是使用:

github.com/amberbit/prawn-fast-png

参数:

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

选项:

:在数组[x,y]处,具有图像左上角的位置.

:位置(:左,中,右)或x偏移中的一个

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

:高度图像的高度[图像的实际高度]

:宽度图像的宽度[图像的实际宽度]

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

:比例适合缩放图像的尺寸以适应[宽度,高度]

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   
Run Code Online (Sandbox Code Playgroud)

如果仅提供: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
Run Code Online (Sandbox Code Playgroud)

此方法返回图像信息对象,如果需要,可以使用该对象检查图像对象的尺寸.(参见:Prawn ::图片:: PNG,Prawn ::图片:: JPG)