2010-02-07 9 views
16

Necesito insertar un enlace en un pdf generado en una aplicación de ruby ​​on rails. ¿Hay alguna manera de hacer esto con gambas?¿Puede generar gambas PDF con enlaces?

Al leer sobre esto, resulta que el formato de gambas fue la respuesta por un tiempo, pero 0.7.x rompió esto.

formato de gambas utiliza la función link_annotate(rect, options={}) para crear enlaces. ¿Qué opciones se deben pasar para lograr que cree un enlace en el PDF?

edición:
Me gustaría ver un ejemplo de código de este que se realiza si alguien tiene uno.

+0

Sería mucho más fácil de usar http://princexml.com/ Es cierto que es un producto patentado, aunque el uso de demostraciones está muy bien. – hendry

Respuesta

10

Si está intentando crear un enlace a una página externa (http://google.com), por ejemplo, se podría utilizar el siguiente, para colocar un enlace que es 100x100 y se coloca a 5, 5 desde la parte inferior izquierda de la página , con un borde de 1 píxel:

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

gambas Formato sería analizar el texto se pasa al método pdf.text y encontrar un html etiquetas. Luego usaría expresiones regulares para analizar el objetivo y el texto del enlace y, finalmente, crear un enlace como el anterior con un cuadro delimitador (el primer parámetro) que se ajustaría al texto que estaba dentro de las etiquetas. No estoy seguro de cómo podrías lograr esto sin el formato de gambas. Pero así es como puedes crear un enlace usando link_annotation.

+0

Su explicación de los parámetros de posición es incorrecta.El significado correcto de [100, 100, 5, 5] es [rightEdgeX, bottomEdgeY, leftEdgeX, topEdgeY]. Aunque esto no debería ser válido, imprime una caja como usted espera. Pero pruebe [100,100,100,100] y no imprime un resultado esperado. Tratado y probado. Aunque es extraño que esta información no sea fácilmente accesible, ni siquiera en la especificación PDF http://partners.adobe.com/public/developer/en/pdf/PDFReference.pdf – Cristian

+0

Para 'gamba 1.0.0' Utilizo esto' link_annotation ([100, 100, 5, 5],: Border => [0,0,1],: A => {: Tipo =>: Acción,: S =>: URI,: URI => PDF :: Core :: LiteralString.new ("http://google.com")}) ' – Selvamani

1

A partir de la gamba 0,7, gamba-formato es completamente no compatible, y no trabajo con versiones de la gamba 0.7+. Siente libre a la mesa y fijar, por supuesto - la página principal de la gamba de formato ancho en github

La otra opción es el uso de la gamba de soporte incorporado anotación de bajo nivel: http://prawn.majesticseacreature.com/docs/prawn-core/classes/Prawn/Document/Annotations.html#M000158

Aquí está el método:

link_annotation (rect, opciones = {})

Un método de conveniencia para la creación de Enlace anotaciones. rect debe ser una matriz de cuatro números, describiendo los límites de la anotación. Las opciones de picadillo debe incluir ya sea: Dest (que describe el punto de destino, por lo general como una cadena que ha sido grabado en dests del documento árbol), o: A (que describe una acción a realizar en clic en el enlace) o: PA (para describir una URL a la que vincular).

+0

¿Sabes cómo usar esta función link_annotation? Si es así, un ejemplo sería útil. – lillq

19

Sé que esto es una cuestión de edad, pero para los que siguen tropezando con él, en las versiones actuales de gambas, se puede utilizar el formato en línea como esta:

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