我正在使用prawn来创建一个pdf文件。在某些情况下,在生成之后,我需要将pdf方向从横向更改为纵向。
Prawn提供rotate
函数,但它不适用于整个pdf,由于某些原因,旋转必须在生成结束之后/之后完成。
我找到了this solution with ImageMagick,但我也面临着巨大的质量下降(并没有提供解决方案)。
我还尝试将生成的pdf用作新prawn pdf的模板,并使用:page_layout
更改方向:
pdf = Prawn::Document.new(page_layout: :landscape, template: file_name)
pdf.render
但是template
参数似乎被忽略了,它只是创建一个空白的pdf。
我正在寻找一个好的解决方案(如果我不需要外部图书馆,可以获得奖励)。
答案 0 :(得分:3)
你可以查看combine_pdf
gem(剧透:我是作者)......
...虽然我认为您可以通过事先设置正确的布局来获得更好的性能(如果您在Prawn中管理PDF,您将无需在其他工具中解析PDF)。
您可以尝试以下效果:
# get the PDF data from prawn and parse it
pdf = CombinePDF.parse prawn_pdf.render
# rotate everything that needs rotation clockwise
pdf.pages.each {|p| p.orientation :landscape }
# or, counter-clockwise:
pdf.pages.each {|p| p.orientation :landscape, false }
# export to String
pdf.to_pdf
# write to file
pdf.save 'my.pdf'
祝你好运。