Wkhtmltopdf

Witam
Czy ktoś się bawił https://github.com/antialize/wkhtmltopdf, używam go wraz z nakładką railsową https://github.com/mileszs/wicked_pdf ale pojawiają się problemy po stronie tego pierwszego.
Jeden z nich to ustawienie obrazka jako tło całej strony, wzdłuż i wszerz, czy można go jakoś rozciągnać zwłaszcza na wysokość ale żeby się nie powtarzał.

Nakładki nie znam, natomiast wkhtmltopdf bawiłem się i jest to absolutnie rewelacyjne narzędzie, które polecam komu się da :slight_smile:

Co do obrazka – CSS nie pomaga?

./wkhtmltopdf-i386 http://rubyonrails.pl/forum/test.html test.pdf

Użyj background-size jak w powyższym przykładzie

Ja osobiście wolę pdfkit niż wicked_pdf

problem jest takie że nie mam ustalonego ile bedzie na danej stronie, ale czasem musze użyć przejścia do nowej, niestety nie da się tego zrobić łatwo w wkhtmltopdf, próbowałem

div.page-breaker {
page-break-after: always;
}

ale problem jest taki że to łamie tło, zarówno obrazek jak i kolor. chciałbym poprostu tło danego koloru w całym dokumencie

Nie rozumiem co chcesz zrobić (“tło danego koloru w całym dokumencie”). To nie jest problem z wkhtmltopdf tylko z zamienieniem tego co chcesz zrobić na dobry css. Napisz dokładnie o co chodzi, nie pracujesz przecież w marketingu żeby owijać w bawełnę ;p

chciałbym mieć tło w danym kolorze w całym dokumencie, oraz używać przejścia do nowej strony ale bez wrzucania poszególnych stron w divy, ponieważ nie wiem czy np dany paragraf zajmie 1 strone czy 1,5. page-break-always łamie jak wspomniałem także ustawiony kolor tła dla body

Czyli masz ten problem ?

Możliwe obejście tego to:

  1. generowanie poszczególnych częście dokumentu osobno (żeby uniknąć stosowania page-break) i później łączenie ich przy pomocy pdftk
  2. dodanie tła do gotowego dokumentu za pomocą pdftk ( więcej tutaj )

dzięki, czyli musze zapisac pdfa do pliku i jakos odpalic tego pdftk ?
zastanawiałem sie też czy dodanie footera nie pomogło by na to złamanie koloru tła, ale nie udało mi się jeszcze odpalić tego najnowszego wkhtmltopdf gdzie podobno dodawanie footera działa. Nie wiem także czy na hostingu będzie on dostępny

Tutaj masz statyczne binarki do pobrania (i386 i amd64) - będą działać na hostingu. Większy problem będzie z pdftk bo wymaga on kompilacji za pomocą GCJ, jeśli masz root’a to powinno być ok, jeśli to jakiś shared hosting to pdftk raczej nie odpalisz (chociaż mogę się mylić).

mamy vpsa w megiteam, bez roota.
dzięki, wypróbuje binarki, może coś ten footer pomoże

– niestety nic to nie zmieniło

Wypróbowałem metodę z łączeniem pdfów z tłem i treścią, działa w miare ok, nie udało mi się uzyskać przeźroczystości ale załatwiłem to marginesami.

Rozumiem że łączenie i wypluwanie pdfa można zrealizować podobnie jak na tym przykładzie podamym przez hosiawak https://gist.github.com/743644
Czy da się jakoś przechwycić to co wypluwa kontroler zamiast renderowac, próbowałem

def show respond_to do |format| format.html format.pdf do content = render_to_string :layout => false, :pdf => "report", ...
ale content zawiera html a nie pdf. Wiem że pdfkit ma opcję zgrania do pliku, ale on nie ma za to obsługi footera i headera wieć tu musiałbym je renderowąć osobno.

już z znlazłem, może komuś się przyda kod

[code=ruby]def show
respond_to do |format|
format.html
format.pdf do
content = render_with_wicked_pdf({
:pdf => ‘content’})

    c = File.open("/tmp/content.pdf", 'w')
    c << content
    c.close
    
    `pdftk /tmp/content.pdf background /home/artur/bg.pdf output /home/artur/out.pdf`

    send_file '/home/artur/out.pdf', :filename => 'out.pdf',
                     :type => 'application/pdf',
                     :disposition => 'inline'

  end
end[/code]

jakie tu ewentualnie wyjątki wyłapać w razie błędu ?