2011-02-08 11 views
7

Tôi tạo tệp PDF bằng cách sử dụng plugin Prawn và Prawnto trong ứng dụng đường ray của mình.Làm cách nào tôi có thể thực hiện định dạng nội tuyến (in đậm và gạch chân) cho PDF được tạo bởi Prawnto trong Rails?

Tôi tạo biểu mẫu chuẩn với vùng văn bản chuẩn và gửi dưới dạng nội dung của tệp PDF.

Tuy nhiên, tôi cần để có thể định dạng từ và câu với:

  • đậm
  • gạch dưới
  • loại có thể khác nhau kích thước

Tôi muốn để có thể làm điều đó từ bên trong hộp nhập văn bản. Ngay bây giờ, bởi vì tôi sử dụng prawnto, tôi về cơ bản là genering một cái nhìn mà kết quả đầu ra những gì trong văn bản.

Nhưng nếu tôi đặt, giả sử, đậm trong vùng văn bản, nó không định dạng, nó chỉ hiển thị.

Làm cách nào để thực hiện việc này?

Trả lời

6

chúng tôi có thể có ứng dụng tương tự ...

Tôm có thể làm nội tuyến cơ bản định dạng được dựa trên (đơn giản) HTML - hãy nhìn vào các text/inline_format.rb dụ trên github. Trong thực tế, hãy xem toàn bộ Prawn Example Gallery nếu bạn chưa có - đó là một trong những điều tốt nhất tôi từng thấy.

Để nhận HTML bạn cần, bạn có thể nhập HTML thẳng vào vùng văn bản (một chút xấu xí - có thể không phải là ý tưởng hay nếu ai đó bên cạnh bạn nhập văn bản) hoặc sử dụng thứ gì đó như Markdown để giải thích thân thiện với người dùng hơn "mã kiểu" giống như StackOverflow. Tôi nghĩ rằng BlueCloth là triển khai ruby ​​nổi tiếng nhất, nhưng tôi chưa bao giờ sử dụng nó.

Đậm và gạch dưới? Không vấn đề gì. Kích thước phông chữ có thể khó hơn - tôi tưởng tượng sẽ khó khăn để BlueCloth phát ra một cái gì đó giống như thẻ (không được chấp nhận) <> chúng sử dụng trong ví dụ Prawn ...

Hy vọng điều này sẽ giúp - cổ vũ!

+2

vì vậy nếu tôi chỉ thêm inline_format => true thì nó sẽ lấy HTML trong vùng văn bản? – Angela

+0

Tôi đang sử dụng plugin prawnto, tôi quên, và vì vậy không truy cập trực tiếp vào PDF, chỉ cần đi qua một khung nhìn với một pdf vẽ và prawnto là chăm sóc nó ... làm thế nào tôi có thể passformatting theo cách đó? – Angela

+0

@Angela Tôi đã không nghe nói về prawnto. Tôi chỉ kiểm tra nó ra, mặc dù, và có vẻ đầy hứa hẹn. Và có vẻ như nó vẫn sử dụng các phương thức Prawn ban đầu, chỉ trong một khung nhìn, vì vậy bạn nên gọi 'pdf.text @ textarea_text' ở đâu đó trong chế độ xem của bạn. Thêm tùy chọn ': inline_format => true' như bạn đã nói _should_ là tất cả những gì nó cần. Nhưng không hứa hẹn - tôi chưa thử nghiệm nó! –

1

Để đối phó với chữ in đậm ...

Trong điều khiển:

respond_to làm | format | format.pdf {render: bố trí => false} prawnto: filename => @current_project + "pdf.",: Tôm => {: font => 'Times-La Mã'},: inline => sai
cuối

Sau đó, trong tập tin pdf.prawn bạn có thể sử dụng:

trong một hộp văn bản:

pdf.text_box "Sửa đổi tài liệu",: size => 16,: style =>: đậm,: tại = > [0.mm, 10.mm],: width => 100.mm,: height => 15.mm;

hoặc trong một dòng văn bản riêng:

pdf.văn bản "Nội dung tài liệu",: size => 16,: style =>: bold;

Theo tôi được biết - nhưng không thử nó - để nhấn mạnh bạn cần làm:

: phong cách => [: đậm,: gạch chân];

refence this link for more

Đây không phải là một tính năng của phiên bản 0.8.4 nhưng phiên bản 0.10.2 - không chắc chắn làm thế nào bạn sẽ làm gạch chân trong 0.8.4. Tôi hiện không sử dụng 0.10.2 nên không thể xác nhận rằng đây là công trình.

Dựa trên những gì bạn đã nói tôi nghĩ rằng đây là những gì bạn muốn cho đậm:

pdf.text_box "#{@yourtext.text}",: size => 16,: style =>: bold ,: at => [0.mm, 10.mm],: width => 100.mm,: height => 15.mm;

+0

cách thực hiện nội tuyến này? Vì vậy, tôi có thể vượt qua nó. textarea .. – Angela

+0

: styles => [: bold,: underline]; không hoạt động trong prwan 0.8.4 nhưng có phiên bản mới nhất trên github. vì vậy không chắc bạn đang sử dụng phiên bản nào. Tôi đang sử dụng 0.8.4 và trong khi: style =>: bold làm việc những người khác thì không. Có câu trả lời đã chỉnh sửa để đề cập đến câu hỏi này và câu hỏi tiếp theo. – user596916