2013-04-18 26 views
7

Khi tôi cố gắng để chèn một hình ảnh (PNG tại 72dpi) sử dụng tôm, như thế này: (. Và lớn hơn)Tại sao Prawn tự động đổi kích thước hình ảnh của tôi?

image "#{Rails.root}/public/images/pdf/logo.png" 

Tôm chèn hình ảnh nhưng quy mô nó lên khoảng 30% mà làm cho nó bị mờ Tôi không có bất cứ điều gì khác trong tập tin và khởi tạo PDF là khá chuẩn:

super(:page_layout => :portrait, 
     :left_margin => 0.5.in, 
     :right_margin => 0.5.in, 
     :top_margin => 1.in, 
     :bottom_margin => 0.5.in) 

Dựa trên các tài liệu, tôm được cho là để chèn hình ảnh vào tài liệu mà không cần bất kỳ sửa đổi nào. Tại sao thay đổi kích thước hình ảnh này lại xảy ra?


LƯU Ý: Tôi nhận thấy rằng các hộp giới hạn cũng lớn hơn (phải bằng cùng tỷ lệ với hình ảnh của tôi).

+1

nó là 158px by 68px – Alain

+0

Sự cố này có thể liên quan đến cách tệp PDF hoạt động giống phiên bản in hơn phiên bản màn hình của một tài liệu. Trừ khi thay đổi 'dpi' làm bất cứ điều gì (mà, theo [thread cũ này] (https://groups.google.com/forum/?fromgroups=#!topic/prawn-ruby/MbMsCx862iY) dường như không có một hiệu ứng,) bạn có thể thử thiết lập các tham số ': width' và': height' khi chèn hình ảnh; Tôi đã thử nó trên một tập tin thử nghiệm, và nó làm sắc nét lên hình ảnh, một chút. – summea

+1

Ngoài ra, để tham khảo: "Đơn vị cơ bản trong Prawn là điểm PDF. Một điểm PDF bằng 1/72 inch". – summea

Trả lời

5

bạn có thể thử qua chiều rộng và chiều cao là hình ảnh thực sự được xem giúp

Tôm :: Images

Công Phương pháp thẩm hình ảnh (file, options = {}) nhấp để chuyển đổi nguồn

Thêm hình ảnh tại tên tệp vào trang hiện tại. Hiện tại, chỉ hỗ trợ tệp JPG và PNG.

LƯU Ý: Tôm rất chậm khi hiển thị PNG có kênh alpha. Các workaround cho những ai không nhớ cài đặt RMagick là sử dụng:

github.com/amberbit/prawn-fast-png

Arguments:

đường dẫn tập tin vào tập tin hoặc một đối tượng mà đáp lại #

Options:

: tại một mảng [x, y] với vị trí của góc trên bên trái của ima ge.

: Vị trí Một trong (: trái,: trung tâm,: right) hoặc x-bù đắp

: vposition Một trong (: top,: trung tâm,: trung tâm) hoặc một y-bù đắp

: chiều cao chiều cao của hình ảnh [thực tế chiều cao của hình ảnh]

: chiều rộng chiều rộng của hình ảnh [chiều rộng thực tế của hình ảnh]

012.

: quy mô quy mô kích thước của hình ảnh tương ứng

: phù hợp quy mô kích thước của hình ảnh tương ứng để phù hợp với bên trong [width, height]

Prawn::Document.generate("image2.pdf", :page_layout => :landscape) do  
    pigs = "#{Prawn::BASEDIR}/data/images/pigs.jpg" 
    image pigs, :at => [50,450], :width => 450          

    dice = "#{Prawn::BASEDIR}/data/images/dice.png" 
    image dice, :at => [50, 450], :scale => 0.75 
    end 

Nếu chỉ một trong số: chiều rộng /: chiều cao được cung cấp, hình ảnh sẽ được tỷ lệ tương ứng. Khi cả hai được cung cấp, hình ảnh sẽ được kéo dài để vừa với kích thước mà không cần duy trì tỷ lệ cỡ ảnh.

Nếu: lúc được cung cấp, hình ảnh sẽ được đặt trong trang hiện tại nhưng vị trí văn bản sẽ không bị thay đổi.

Nếu thay vì tên tệp rõ ràng, đối tượng có phương thức đọc được chuyển thành tệp, bạn có thể nhúng hình ảnh từ đối tượng IO và những thứ hoạt động giống như chúng (bao gồm Tempfiles và đối tượng mở uri).

require "open-uri" 

    Prawn::Document.generate("remote_images.pdf") do 
    image open("http://prawn.majesticseacreature.com/media/prawn_logo.png") 
    end 

Phương thức này trả về đối tượng thông tin hình ảnh có thể được sử dụng để kiểm tra kích thước của đối tượng hình ảnh nếu cần. (Xem thêm: Prawn :: Images :: PNG, Prawn :: Images :: JPG)

+0

Hi, tôi muốn biết nếu tôi muốn vị trí hình ảnh ở trung tâm của pdf những gì tôi nên làm gì? Tôi biết der là vposition n vị trí nhưng tôi có văn bản cần phải đến phía trên hình ảnh để tôi không thể sử dụng vị trí n vposition –

Các vấn đề liên quan