2011-02-08 5 views
7

Genero un file PDF usando Prawn e il plugin Prawnto nella mia applicazione rails.Come posso eseguire la formattazione in linea (grassetto e sottolineato) per PDF generato da Prawnto in Rails?

Creare un modulo standard con un'area di testo standard e inviarlo come corpo del file PDF.

Tuttavia, ho bisogno di essere in grado di formattare le parole e le frasi con:

  • grassetto
  • sottolineatura
  • tipo forse differente dimensioni

Voglio essere in grado di farlo dalla casella di inserimento textarea. In questo momento, perché uso prawnto, fondamentalmente sto generando una vista che emette ciò che è nella textarea.

Ma se inserisco, diciamo, in grassetto nell'area di testo, non viene formattato, ma solo rendering.

Come posso fare?

risposta

6

possiamo avere applicazioni simili ...

Prawn può fare in linea di base formattazione in base (semplice) HTML - date un'occhiata al text/inline_format.rb esempio su GitHub. In effetti, dai uno sguardo all'intero Prawn Example Gallery se non l'hai - è uno dei migliori che abbia mai visto.

Per ottenere l'HTML necessario è possibile digitare HTML direttamente nell'area di testo (un po 'brutto - potrebbe non essere una buona idea se qualcuno oltre a te inserirà del testo) o utilizzare qualcosa come Markdown per interpretare più user-friendly "codici di stile" come StackOverflow fa. Penso che lo BlueCloth sia l'implementazione ruby ​​più conosciuta, ma non l'ho mai usato da solo.

Grassetto e sottolineato? Nessun problema. La dimensione dei caratteri potrebbe essere più difficile - Immagino che sarebbe difficile ottenere che BlueCloth emetta qualcosa come il (deprecato) font < che usano nell'esempio Prawn ...

Spero che questo aiuti - saluti!

+2

quindi se aggiungo semplicemente inline_format => true occorrerà il codice HTML nell'area di testo? – Angela

+0

Sto usando il plugin prawnto, ho dimenticato, e quindi non accedo direttamente al PDF, basta passare una vista con un pdf di rendering e prawnto si sta prendendo cura di esso ... come posso passare a quella formattazione? – Angela

+0

@Angela Non avevo mai sentito parlare di prawnto. L'ho appena verificato, però, e sembra promettente. E sembra che usi ancora i metodi originali di Prawn, solo in una vista, quindi dovresti chiamare 'pdf.text @ textarea_text 'da qualche parte nella tua vista. Aggiungendo l'opzione ': inline_format => true' come hai detto _should_ essere tutto quello che serve. Ma nessuna promessa: non l'ho provato! –

1

In risposta al testo in grassetto ...

In regolatore:

respond_to fare | Formato | format.pdf {rendering: layout => false} prawnto: filename => @current_project + ". Pdf",: prawn => {: font => 'Times-Roman'},: inline => false
fine

Poi, nel file di pdf.prawn è possibile utilizzare:

in una casella di testo:

pdf.text_box "revisioni del documento",: size => 16,: style =>: grassetto,: a = > [0.mm, 10.mm],: width => 100.mm,: height => 15.mm;

o in una riga di testo sul proprio:

pdf.testo "Contenuto del documento",: size => 16,: style =>: bold;

A quanto ho capito - ma non provato - per sottolineare quello che devi fare:

: stili => [: grassetto,: underline];

refence this link for more

Questa non è una caratteristica della versione 0.8.4 ma la versione 0.10.2 - non so come si farebbe sottolineare in 0.8.4. Attualmente non sto usando 0.10.2 quindi non posso confermare che funzioni.

In base a ciò che hai detto Credo che questo sia ciò che si vuole per il grassetto:

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

+0

come viene eseguito in linea? Quindi posso passarlo. textarea .. – Angela

+0

: styles => [: bold,: underline]; non funziona in prwan 0.8.4 ma è in versione più recente su github. quindi non sai quale versione stai usando. Sto usando 0.8.4 e mentre: style =>: bold non funziona con gli altri. Ho modificato la risposta per coprire questo e ulteriore domanda. – user596916