为什么载波0.9.0在转换为pdf时重新采样jpgs

时间:2014-09-09 22:08:30

标签: pdf carrierwave minimagick

在v0.8.0中做了一个 process :convert => "pdf" 在jpg上导致jpg存储在pdf内部。即PDF只是pdf的一个包装。

在v0.9.0之后,相同的操作会导致更小/更低分辨率的重采样jpg存储在pdf中。

相同版本的minimagick始终使用。

从生成的pdf中剪切以下两个块,第一个块是使用carrierwave 0.9.0生成的,第二个块是0.8.0。这是code / gemfile中唯一的变化。转换为PDF的文件是600 DPI图像。在将图像转换为PDF时,默认情况下,carrierwave 0.9.0似乎使用dpi为72 ...

/Type /XObject
/BitsPerComponent 8
/ColorSpace /DeviceRGB
/Filter [ /RunLengthDecode ]
/Height 522
/Length 317714
/Name /Im0
/SMask 8 0 R
/Subtype /Image
/Width 378


/Type /XObject
/BitsPerComponent 8
/ColorSpace /DeviceRGB
/Filter [ /DCTDecode ]
/Height 4350
/Length 649502
/Name /Im0
/Subtype /Image
/Width 3150

1 个答案:

答案 0 :(得分:0)

这是一个解决方法:替换     过程:convert => :PDF 同     过程:convert_to_pdf

并添加

def convert_to_pdf # copied from carrierwave code base
  # @format = :pdf # this line causes the problem... why?
  manipulate! do |img|
    img.format(:pdf) 
    img
  end
end

换句话说,创建自己的转换函数,它没有@format =:pdf,这就是造成问题的原因。 @format =:pdf我相信只有你一起链接操作才需要。