大虾-图像被裁剪,无法呈现完整图像

时间:2018-11-07 16:02:16

标签: ruby ruby-on-rails-5 prawn

我目前正在使用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时,它不是完整图像。 enter image description here

是否有一种适合全尺寸图像的方法?问题来自Prawn还是CombinePDF?

2 个答案:

答案 0 :(得分:0)

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

savingmulans(pcode, code, name, reg, val)

因此,您将def savingmulans(pcode, ecode, name, reg, mulans): # --------------------- Multiple answer mark db_con = sqlite3.connect('data.db') print("Created") curs = db_con.cursor() for i in range(len(mulans)): # a = mulans[i] curs.execute("INSERT INTO Student_Tab(Name, Id, Examcode, Papercode, MultipleAnswer) VALUES(?, ?, ?, ?, ?);", (name, reg, ecode, pcode, mulans)) db_con.commit() curs.close() db_con.close() 设置为 pdf_prawn = Prawn::Document.new(page_size: 'LETTER') pdf_prawn.image format_image, fit: [610, 790], position: :center, position: :center ,然后考虑到页面上的page_size边距,将字母的尺寸传递给LETTER作为参数。 。您也可以使用fit:来调整图像的大小,但是我发现它缺乏精度。有关此问题的更多信息,请参见Prawn手册

答案 1 :(得分:0)

您可以使用以下方法获取页面尺寸:

pdf_prawn.bounds.width
pdf_prawn.bounds.height

您可以将其传递给适合的人。