2010-02-07 25 views
16

Tôi cần nhúng một liên kết vào một tệp pdf được tạo trong ruby ​​trên ứng dụng đường ray. Có cách nào để làm điều này với tôm không?Tôm có thể tạo các tệp PDF có liên kết không?

Đọc về điều này nó chỉ ra rằng định dạng tôm là câu trả lời trong một thời gian, nhưng 0.7.x đã phá vỡ điều này.

định dạng con tôm sử dụng hàm link_annotate(rect, options={}) để tạo liên kết. Những tùy chọn nào cần được chuyển vào điều này để tạo ra một liên kết trong PDF?

chỉnh sửa:
Tôi muốn xem ví dụ về mã này đang được thực hiện nếu có ai đó.

+0

Sẽ đơn giản hơn nhiều để sử dụng http://princexml.com/ Phải thừa nhận là một sản phẩm độc quyền, mặc dù việc sử dụng bản demo chỉ là tốt. – hendry

Trả lời

10

Nếu bạn đang cố gắng tạo liên kết đến trang bên ngoài (http://google.com), ví dụ: bạn có thể sử dụng thông tin sau để đặt liên kết 100x100 và đặt ở 5, 5 từ dưới cùng bên trái của trang , có đường viền 1px:

pdf.link_annotation([100, 100, 5, 5], :Border => [0,0,1], :A => { :Type => :Action, :S => :URI, :URI => Prawn::LiteralString.new("http://google.com") }) 

Định dạng tôm sẽ phân tích văn bản được chuyển đến phương thức pdf.text và tìm html thẻ. Sau đó, nó sẽ sử dụng các biểu thức chính quy để phân tích cú pháp văn bản đích và liên kết và cuối cùng tạo một liên kết giống như ở trên với một hộp giới hạn (tham số đầu tiên) phù hợp với văn bản nằm trong các thẻ. Tôi không chắc làm thế nào bạn có thể đạt được điều này mà không có định dạng Prawn. Nhưng đó là cách bạn có thể tạo một liên kết bằng cách sử dụng link_annotation.

+0

Giải thích của bạn về thông số vị trí sai.Ý nghĩa chính xác của [100, 100, 5, 5] là [rightEdgeX, bottomEdgeY, leftEdgeX, topEdgeY]. Mặc dù điều này không hợp lệ, nó in ra một hộp như bạn mong đợi. Nhưng hãy thử [100,100,100,100] và nó không in kết quả mong đợi. Đã thử và thử nghiệm. Thật lạ khi thông tin này không dễ dàng truy cập được, ngay cả trong thông số PDF http://partners.adobe.com/public/developer/en/pdf/PDFReference.pdf – Cristian

+0

Đối với 'prawn 1.0.0' tôi sử dụng thông tin này' link_annotation ([100, 100, 5, 5],: Đường viền => [0,0,1],: A => {: Loại =>: Hành động,: S =>: URI,: URI => PDF :: Core :: LiteralString.new ("http://google.com")}) ' – Selvamani

1

Tính đến Tôm 0.7, tôm-format là hoàn toàn không được hỗ trợ, và sẽ không làm việc với các phiên bản của Tôm 0.7+. Cảm thấy miễn phí đến ngã ba và sửa chữa, tất nhiên - trang web của tôm-format trên github

Các tùy chọn khác là sử dụng tôm được xây dựng trong hỗ trợ chú thích ở mức độ thấp: http://prawn.majesticseacreature.com/docs/prawn-core/classes/Prawn/Document/Annotations.html#M000158

Heres phương pháp:

link_annotation (rect, options = {})

Một phương pháp thuận tiện cho việc tạo liên kết chú thích. rect phải là một mảng gồm bốn số, mô tả các giới hạn của chú thích. Tùy chọn băm phải bao gồm: Dest (mô tả đích đích, thường là một chuỗi đã được ghi là trong Dests cây) của tài liệu hoặc: A (mô tả hành động để thực hiện khi nhấp vào liên kết), hoặc: PA (để mô tả một URL để liên kết tới).

+0

Bạn có biết cách sử dụng hàm link_annotation này không? Nếu vậy, một ví dụ sẽ hữu ích. – lillq

19

Tôi biết đây là một câu hỏi cũ, nhưng đối với những vẫn ngại khi đó, trong các phiên bản hiện tại của Tôm, bạn có thể sử dụng định dạng inline như thế này:

pdf.text "Website: <link href='http://www.stackoverflow.com'>stackoverflow</link>", :inline_format => true 
Các vấn đề liên quan