Pdf-writer dla Ruby, kod nie działa :(

Witam

Próbuję użyć biblioteki pdf-writer dla Ruby.
Zainstalowałem pdf-writer za pomocą gemów.

[code]praca@tomek-laptop:~/Pulpit/Rails$ gem list

*** LOCAL GEMS ***
actionmailer (2.3.5, 2.3.4)
actionpack (2.3.5, 2.3.4)
activerecord (2.3.5, 2.3.4)
activeresource (2.3.5, 2.3.4)
activesupport (2.3.5, 2.3.4)
acts_as_list (0.1.2)
calendar_date_select (1.15)
cgi_multipart_eof_fix (2.5.0)
color (1.4.1)
color-tools (1.3.0)
gem_plugin (0.2.3)
gemcutter (0.5.0)
hoe (2.5.0)
json_pure (1.2.3)
mocha (0.9.8)
pdf-writer (1.1.8)
rack (1.1.0, 1.0.1)
rails (2.3.5)
rake (0.8.7)
rubyforge (2.0.4)
transaction-simple (1.4.0)
praca@tomek-laptop:~/Pulpit/Rails$[/code]
Jednak próbując uruchomić kod demo ze strony projektu:

[code]#–

PDF::Writer for Ruby.

http://rubyforge.org/projects/ruby-pdf/

Copyright 2003 - 2005 Austin Ziegler.

Licensed under a MIT-style licence. See LICENCE in the main distribution

for full licensing information.

$Id: hello.rb,v 1.6 2005/06/13 19:32:37 austin Exp $

#++
begin
require ‘pdf/writer’
rescue LoadError => le
if le.message =~ %r{pdf/writer$}
$LOAD_PATH.unshift("…/lib")
require ‘pdf/writer’
else
raise
end
end

pdf = PDF::Writer.new
pdf.select_font “Times-Roman”
pdf.text “Hello, Ruby.”, :font_size => 72, :justification => :center

pdf.save_as(“hello.pdf”)[/code]
Wywala mi błąd:

praca@tomek-laptop:~/Pulpit/Rails$ ruby pdf.rb pdf.rb:16:in `require': no such file to load -- pdf/writer (LoadError) from pdf.rb:16 praca@tomek-laptop:~/Pulpit/Rails$
Nie wiem jak sobie dalej z tym poradzić

Dodam że używam Ubuntu.

Dzięki za posty :slight_smile:

a probowales w irb np czy cos dla testow dac require ‘pdf-writer’
tak jak w spisie gemow sie on nazywa?

Spróbuj na początku pliku dać:

require 'rubygems'

Z góry przepraszam za OT. Zwróć uwagę, że ostatnia wersja pdf-writer wyszła w 2008. Od tego czasu doszło co nieco nowych rzeczy w standardzie PDF. Czy próbowałeś używać gema prawn? Na jego korzyść przemawia obsługa UTF-8 oraz bycie aktywnie rozwijanym.

Dzięki Hekto5 za posta.

Miałem co prawda już część kodu napisanego, który generował pdf-a w pdf-Writer, ale właśnie bez polskich znaków.
Po twoim poście przerzuciłem się na Prawn.

W ogóle to brakowało mi wszedzie: require ‘rubygems’, sam bym w życiu nie wpadł że tego nie miałem :frowning:

W ogóle zadam jeszcze jedno pytanko OT.

Do tej pory zapisuję pdf-a na serwerze a następnie robię render :file =>@path. Czy można wysłać pdf nie zapisując go na dysku?

Dzięki za posty :slight_smile:

Pozdrawiam :slight_smile:

Jeśli chodzi o RoR to poczytaj:
http://apidock.com/rails/ActionController/Streaming/send_data
i
http://apidock.com/rails/ActionController/Base/render (Streaming data and/or controlling the page generation )

Co do Prawn to nie używałem, więc musisz sprawdzić w dokumentacji jak zwrócić zawartość pliku
zamiast go zapisywać na dysku.

A jak wywołujesz tworzenie PDFa ? Jeśli linkiem to możesz poprostu dać w kontrolerze

respond_to do |format| format.html {} format.pdf do prawnto :prawn => { :page_layout => :portrait, :page_size => 'A4' }, :filename => nazwa_pliku + ".pdf" end end
i w linku np. link_do_czegostam_path(:format => :pdf). Po kliknięciu przegladarka powinna zwrócić PDFa

axlinux: na temat prawn + RoR przeczytasz na wiki prawn: http://wiki.github.com/sandal/prawn/using-prawn-in-rails. Osobiście uważam prawnto za niepotrzebny. Główna zaletą użycia zwykłych klas jest możliwość łatwego napisania testów/speców oraz użycia tych klas nie tylko jako widoku MVC.

Już sobie z wszystkim poradziłem.

Czytałem też o prawnto ale nie przekonało mnie to rozwiązanie.

Dzięki za posty :slight_smile: