首页 > 解决方案 > 大虾 - 图像被裁剪并且完整图像未渲染

问题描述

我目前正在使用 Prawn 和 CombinePDF 开发 Ruby on Rails 5.2 应用程序。我请求将文件发送到 Box api。我从框中得到的文件然后转换为字符串StringIO.new(image),然后使用它添加到虾文档中,如图所示。

attach_docs_from_submission(user_data).each do |file|
      image = client.download_file(file)
      format_image = StringIO.new(image)
      pdf_prawn = Prawn::Document.new
      pdf_prawn.image format_image
      pdf_data = pdf_prawn.render
      pdf << CombinePDF.parse(pdf_data)
    end

但是,当我检查 PDF 不是完整图像时。在此处输入图像描述

有没有办法适合全尺寸的图像?问题是来自 Prawn 还是 CombinePDF?

标签: rubyruby-on-rails-5prawn

解决方案


这个答案是基于我的偏好,因为我意识到有很多方法可以解决这个问题。对我个人而言,这是最精简和灵活的解决方案。

      pdf_prawn = Prawn::Document.new(page_size: 'LETTER')
      pdf_prawn.image format_image, fit: [610, 790],
                                    position: :center,
                                    position: :center

所以你设置page_size然后LETTER你得到字母的尺寸并将它们作为参数传递给fit:考虑.5页面上的边距。您也可以scale:用于调整图像大小,但我发现它缺乏精度。有关这方面的更多信息可以在手册中找到


推荐阅读