2

バウンディング ボックスのサイズを超える画像をクリップしたい。CSS の overflow: hidden がそれを行うのと同じように。例えば。

pdf.grid([0, 0], [3, 27]).bounding_box do
 pdf.image image_file
end

現在、この画像がバウンディング ボックスよりも大きい場合、この画像はバウンディング ボックスの外側にオーバーフローします。境界ボックスを超えたときに画像を切り取る方法はありますか。? text_box を使用している場合、テキストでこれが可能であることはわかっています。

4

2 に答える 2

1

画像のサイズを設定したり、比率を維持しながら特定の領域内に収まるように画像を拡大縮小したりできます。画像をトリミングできるとは思わないでください。

ページが動的でない場合、つまり画像領域は常に同じで問題ありません。

pdf.image "image_file_path_&_name", :position => :center, :fit => [100,450];

これは v0.8.4 に基づいています。

于 2011-02-12T22:04:39.023 に答える
0

残念ながら、現時点では画像をバウンディング ボックスにトリミングする適切な方法はないようです。この問題に直面して、私はこの美しさを理解しました:

class SamplePdf

  include Prawn::View

  def initialize

    crop_width = 100 # your width here
    crop_height = 50 # your height here
    image_path = '/path/to/your_image.jpg'

    bounding_box [0, 0], width: crop_width, height: crop_height do

      pdf_obj, _ = build_image_object(image_path)

      x, y = document.send(:image_position, crop_width, crop_height, {})
      document.send(:move_text_position, crop_height)

      label = "I#{document.send(:next_image_id)}"
      document.state.page.xobjects.merge!(label => pdf_obj)

      cm_params = PDF::Core.real_params([crop_width, 0, 0, crop_height, x, y - crop_height])
      document.renderer.add_content("\nq\n#{cm_params} cm\n/#{label} Do\nQ")
    end
  end
end

それは基本的にPrawn::Images#image方法を適応させますが、画像の寸法とスケーリングの計算をそれぞれスキップします。

それは正確にはきれいな解決策ではありません。より良いものを見つけたら、私に知らせてください。

ただし、このスニペットは、Prawn のパブリック API の一部ではなく、いつでも変更できるいくつかの実装の詳細を利用していることに注意してください。

執筆時点では、Prawn 2.0.1 が最新バージョンでした。

于 2015-06-17T17:03:43.110 に答える