Prawn: ページサイズの高さを自動に設定するにはどうすればよいですか?

作成日 2016年08月14日  ·  6コメント  ·  ソース: prawnpdf/prawn

エビを使ってレシートを生成していますが、ページの高さは、顧客が購入するアイテムの数に依存するため、不明です。

最も参考になるコメント

投稿したかったのは:smile:-だからここに行く:

エビが自動的に新しいドキュメントを作成しないように、ドキュメントに非常に大きな高さを使用することもできます。 そして、すべてが終わったら、 Prawn::Document#yを使用して現在の垂直位置を決定します。

次に、 Prawn::Document#pagePDF::Core::Pageオブジェクト)を使用して、ページのMediaBoxを次のように調整できます。

require 'prawn'

Prawn::Document.generate("test.pdf", page_size: [100, 2000], margin: 10) do |doc|
  rand(100).times do
    doc.text("some text")
  end
  doc.page.dictionary.data[:MediaBox] = [0, doc.y - 10, 100, 2000]
end

全てのコメント6件

こんにちは@vonchristian

ページの高さに「auto」を設定する方法がないのではないかと思います。 PDFの主な使用例は、ページ化されたドキュメントです。

回避策として、ページに非常に大きな高さを設定し、必要なものをすべてレイアウトし、必要なスペースの量を記録し、サイズを反映するようにページオブジェクトを操作することをお勧めします。 私はあなたに私の頭のてっぺんのそれをする方法についての正確な指示を与えることができません。 私はあなたがおそらくPDF::Coreの内臓にかなり深く入る必要があるだろうとあなたに言うことができます。

投稿したかったのは:smile:-だからここに行く:

エビが自動的に新しいドキュメントを作成しないように、ドキュメントに非常に大きな高さを使用することもできます。 そして、すべてが終わったら、 Prawn::Document#yを使用して現在の垂直位置を決定します。

次に、 Prawn::Document#pagePDF::Core::Pageオブジェクト)を使用して、ページのMediaBoxを次のように調整できます。

require 'prawn'

Prawn::Document.generate("test.pdf", page_size: [100, 2000], margin: 10) do |doc|
  rand(100).times do
    doc.text("some text")
  end
  doc.page.dictionary.data[:MediaBox] = [0, doc.y - 10, 100, 2000]
end

@gettalongありがとう! 思ったよりずっと簡単でした。 😅

@vonchristian私は今この問題を閉じます。 この問題が解決しないと思われる場合は、お気軽に再開してください。

感謝! 私の場合、クラスTicketPdf < Prawn::Documentを使用し、メソッドinitializeのソリューションはself.page.dictionary.data[:MediaBox] = [0, self.y - 10, 350, 2000]です。

ありがとう、見事に動作します!

幅(コンテンツの右端のx )を決定する方法に関する提案はありますか? 上記の例では、ハードコーディングされています。

PDF::Inspectorで簡単にこれを行うことはできないと思います。

このページは役に立ちましたか?
0 / 5 - 0 評価