Ruby   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ruby-on-rails – 大虾:添加更大分辨率的背景图像大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在创建一个pdf书,我需要为每个页面放置一个背景图像.

页面大小为(576 x 576),背景图像的大小为2700 x 2700(300 dpi)(这些尺寸是无法调整的要求).
我的问题是 – 背景图像在页面中不成比例.如何解决这个问题?
这是我的代码:

Prawn::Document.generate("#{Rails.root.to_s}/public/#{filename}.pdf",:page_size => [576,576],:left_margin => 50,:right_margin => 50,:page_layout => :porTrait,:skip_page_creation => true,:skip_encoding => true,:BACkground => "#{Rails.root.to_s}/public/images/pdf/bg_blank_low.jpg" ) do |pdf|
    ....
    ....
    ....
)

是否有任何其他方式可以将300 dpi的图像作为背景图像.

我甚至尝试添加pdf模板作为背景,但仍然没有运气.

任何建议或提示将不胜感激.

谢谢.

解决方法

您尝试做的不能使用:Prawn :: Document.generate的:BACkground选项,因为:BACkground选项无法缩放图像.如果要使用:BACkground选项,则需要确保您的图像与PDF(通常为72dpi)的dpi相同.

然而,您可以简单地将图像嵌入页面中,就像您正常的图像一样,然后将文本浮动在其顶部.这是因为当您嵌入图像时,您可以缩放图像.代码可能如下所示:

Prawn::Document.generate("#{Rails.root.to_s}/public/#{filename}.pdf",:skip_encoding => truE) do |pdf|
  bg_image = "#{Rails.root.to_s}/public/images/pdf/bg_blank_low.jpg"
  pdf.image bg_image,:scale => 0.2311
  pdf.move_up 576
end

这将使您的“背景”完全覆盖该页面(因为我们手动计算了尺度2700/576),如果要尊重您的边距(这可能是一般更好的方法),您可能会更改为:

pdf.image bg_image,:width => pdf.bounds.width

这应该根据页面边框的宽度自动缩放图像.当然,您也需要更改move_up,如下所示:

pdf.move_up pdf.bounds.height

在这样做之后,您可以开始放置文本,并且应该出现在图像的顶部,因此我们可以得到我们的模拟缩放背景.

更新

这是关于评论的更新.如果您有自动创建的页面,并且希望它们拥有相同的背景,那么如果您使用当前的大虾版本,那么您将失去运气.如果你真的需要这个功能,那么你必须补丁虾.

抓取虾源(从https://github.com/sandal/prawn),看看它.你以后是lib / document.rb,在第244行有一个方法start_new_page,这是你之后的.在280行的方法中,您可以看到设置背景的位置.不幸的是,它使用的是画布,这意味着你的图像必须是正确的大小.这就是为什么背景图像不会自动缩放的原因.

您将需要覆盖此行为.既然这是Ruby,所有你需要做的是重新打开你的项目中的类,然后复制粘贴这个方法(如果你需要更多的信息,如何做到这一点,有很多关于猴子修补Ruby类).现在你将这个方法编辑到你的心中.最简单的方法可能是一起删除画布,然后使用我们上面的图像技巧.所以行最后如:

image(@BACkground,:width => bounds.width) if @BACkground
move_up bounds.height

你现在可以回到使用设置背景的标准方式,一切都应该起作用.

事实上,你甚至可以通过改变第280行摆脱这一点:

canvas { image(@BACkground,:width => bounds.width) } if @BACkground

一切都应该正常工作,节省你不得不输入一个额外的线:).使用带有:width选项的图像应该自动缩放图像,而使用:at选项,因为对虾不会缩放图像.

注意:我没有这样做,所以你可能需要工作的扭结.

大佬总结

以上是大佬教程为你收集整理的ruby-on-rails – 大虾:添加更大分辨率的背景图像全部内容,希望文章能够帮你解决ruby-on-rails – 大虾:添加更大分辨率的背景图像所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。