代码之家  ›  专栏  ›  技术社区  ›  Steven Aguilar

虾-图像被裁剪&未渲染完整图像

  •  0
  • Steven Aguilar  · 技术社区  · 6 年前

    我目前正在使用Prawn和CombinePDF开发rubyonrails5.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时并不是完整的图像。 enter image description here

    有没有一种方法可以适合全尺寸的图像?这个问题是由对虾引起的还是由CombinePDF引起的?

    2 回复  |  直到 6 年前
        1
  •  0
  •   Steven Aguilar    6 年前

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

          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: 但我发现它不够精确。有关这方面的更多信息,请参见 Prawn 手册

        2
  •  0
  •   bonsai    6 年前

    您可以使用以下命令获取页面维度:

    pdf_prawn.bounds.width
    pdf_prawn.bounds.height
    

    你可以把这些传给合适的人。