2010-02-07 12 views
16

Ho bisogno di inserire un link in un pdf generato in un'app ruby ​​on rails. C'è un modo per farlo con gamberi?Può gamwn generare PDF con collegamenti?

Leggendo di questo si scopre che il formato di gamberi è stato la risposta per un po ', ma 0.7.x ha rotto questo.

in formato gambero utilizza la funzione link_annotate(rect, options={}) per creare collegamenti. Quali opzioni devono essere passate in questo per fargli creare un link nel PDF?

edit:
Mi piacerebbe vedere un esempio di codice di questo essere fatto se qualcuno ha uno.

+0

Sarebbe molto più semplice da usare http://princexml.com/ Ammettiamolo un prodotto proprietario, anche se l'uso dimostrativo va bene. – hendry

risposta

10

Se si sta tentando di creare un collegamento a una pagina esterna (http://google.com), per esempio, è possibile utilizzare il seguente, per inserire un link che è 100x100 e messo a 5, 5 dal basso a sinistra della pagina , con un bordo 1px:

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

Prawn Formato sarebbe analizzare il testo passato al metodo pdf.text e trovare html un tag. Dovrebbe quindi utilizzare le espressioni regolari per analizzare il target e collegare il testo e infine creare un collegamento come quello sopra con un riquadro di delimitazione (il primo parametro) che si adatterebbe attorno al testo che era all'interno dei tag. Non sono sicuro di come potresti ottenere ciò senza il formato Prawn. Ma è così che puoi creare un link usando link_annotation.

+0

La spiegazione dei parametri di posizione è errata.Il significato corretto di [100, 100, 5, 5] è [rightEdgeX, bottomEdgeY, leftEdgeX, topEdgeY]. Anche se questo non dovrebbe essere valido, stampa una finestra come previsto. Ma prova [100,100,100,100] e non stampa un risultato previsto. Provato e testato. È strano però che questa informazione non sia facilmente accessibile, nemmeno nelle specifiche PDF http://partners.adobe.com/public/developer/en/pdf/PDFReference.pdf – Cristian

+0

Per 'prawn 1.0.0' Io uso questo' link_annotation ([100, 100, 5, 5],: Border => [0,0,1],: A => {: Type =>: Action,: S =>: URI,: URI => PDF :: Core :: LiteralString.new ("http://google.com")}) ' – Selvamani

1

A partire dal Prawn 0,7, gamberi-formato è completamente supportato, e non sarà lavoro con le versioni di Prawn 0.7+. Sentitevi liberi di forcella e risolvere, naturalmente - Homepage del gamberi formato sul github

L'altra opzione è quella di utilizzare gamberi di costruzione a basso livello di supporto di annotazione: http://prawn.majesticseacreature.com/docs/prawn-core/classes/Prawn/Document/Annotations.html#M000158

Heres il metodo:

link_annotation (rect, opzioni = {})

Un metodo comodo per la creazione di link annotazioni. rect deve essere un array di quattro numeri, che descrive i limiti di l'annotazione. Le opzioni di hash dovrebbe comprendere sia: Dest (che descrive il target di destinazione, di solito sotto forma di stringa che è stato registrato nel Dest del documento albero), o: A (che descrive un'azione da eseguire sul cliccando sul link), oppure: PA (per la descrizione di un URL al quale collegarsi).

+0

Sai come usare questa funzione link_annotation? Se è così, un esempio sarebbe utile. – lillq

19

So che questa è una vecchia questione, ma per chi ancora inciampare su di esso, nelle versioni correnti di Prawn, è possibile utilizzare il formato in linea come questo:

pdf.text "Website: <link href='http://www.stackoverflow.com'>stackoverflow</link>", :inline_format => true 
Problemi correlati