在 ruby​​ 中旋转 pdf

Mor*_*iak 2 ruby pdf imagemagick prawn

我正在使用 prawn 创建一个 pdf 文件。在某些情况下,生成后,我需要将pdf方向从横向更改为纵向。

大虾提供了一个rotate功能,但它不适用于整个pdf,并且由于某些原因,旋转必须在生成之后/结束时完成。

用 ImageMagick 找到了这个解决方案,但我也面临着巨大的质量下降(并且没有提供解决方案)。

我还尝试使用我生成的pdf作为新虾pdf的模板并用于:page_layout更改方向:

pdf = Prawn::Document.new(page_layout: :landscape, template: file_name)
pdf.render
Run Code Online (Sandbox Code Playgroud)

但该template参数似乎被忽略,它只是创建一个空白的 pdf。

我正在寻找一个好的解决方案(如果我不需要外部库,那就加分)。

Mys*_*yst 6

您可以查看combine_pdf宝石(剧透:我是作者)......

...虽然我认为通过预先设置正确的布局你会体验到更好的性能(如果你在 Prawn 中管理它,你将避免需要在不同的工具中解析 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'
Run Code Online (Sandbox Code Playgroud)

祝你好运。