我正在尝试从不同大小的图像创建PDF文档,以便PDF的每个页面显示一个未缩放的图像,页面大小应符合图像尺寸。
我正在使用Prawn从图像文件名列表中生成PDF。要获取图像尺寸,我使用FastImage。
Prawn::Document.generate('Output.pdf') do
list_of_image_filenames.each do |i|
image_size = FastImage.size(i)
start_new_page(:size => image_size, :layout => :portrait)
image(i)
end
end
要测试它我使用的尺寸为560x560,600x600和600x600的三个PNG文件。我确保FastImage返回正确的图像尺寸。
生成的PDF(预览告诉我PDF版本1.4)如下所示:
以下是其中一个裁剪图像的示例;原始图像是一个完整的圆角矩形,里面有数字“1”。
为什么图片不适合页面?如何将各个未缩放的图像放在符合其尺寸的页面上?
答案 0 :(得分:3)
可能不是一个确切的答案,但评论可能太长了。我有一些建议: 您是否尝试过指定图像大小和位置? e.g。
image(i,position: :left, vposition: :top, fit: image_size)
这会将图片放在文档的左上角,这会强制它适合image_size
Array
的尺寸。 可能有助于裁剪。
同样在设置page_size时,您需要填充边距,否则图像将不适合,因为它在可写区域之外尝试类似
image_size = FastImage.size(i)
#default margins are 0.5 inches so pad both height and width with 1 inch using in2pt
page_size = image_size.map{|p| p + in2pt(1) }
start_new_page(:size => page_size, :layout => :portrait)
我不能保证这会起作用而且它还没有经过测试但是通常溢出到其他页面上的事实是你不能在边界内放置一个特定的对象,所以填充页面大小应该有帮助。
答案 1 :(得分:1)