Barras gems gamba, imagen y ancla.

¿Me puede decir cómo insertar una imagen que será un enlace, por ejemplo, en la página 20? Sé cómo hacer con texto normal:

text "Go to page 20", :inline_format=>true 

y luego en la página 20 tengo

 add_dest('page20', dest_fit(page.dictionary)) 

¿Pero cómo hacer esto con la imagen?

Prawn no soporta esta funcionalidad. De hecho, incluso si coloca un formatted_text_box sobre una imagen y la llena con espacios en blanco, aún no funcionará. Un ancla tiene que incluir texto para trabajar. Si no te importa tener texto sobre tu imagen, entonces esa podría ser una solución.

El propio readme de Prawn dice:

Una cosa que Prawn no es, y nunca será, es un generador de HTML a PDF.

Después de lidiar con muchas de las deficiencias de Prawn, he cambiado a usar wicked_pdf para mi generación de Ruby on Rails en PDF y estoy muy feliz con ella. Si puede hacerlo en html & css, puede hacerlo con wicked_pdf.

En parte gracias a lightswitch05 por algunos bashs en la dirección correcta, he encontrado una manera de obtener el efecto que quiero a través de esta forma poco elegante:

  • Insertar una imagen en una bounding_box (el cursor la página está en este punto en la parte inferior de la imagen)
  • Mueve el cursor de nuevo a la parte superior de la imagen
  • Inserte un enlace de texto sobre la imagen (en mi caso, solo utilicé, sin embargo, se necesitaron muchas barras verticales ‘ | ‘ para cubrir la imagen)
  • Confirme visualmente que el área de enlace en la que se puede hacer clic es aproximadamente igual a los límites de la imagen
  • Haga que el enlace de texto sea transparente, y voilà, parece que está haciendo clic en la imagen.

Aquí hay un código de ejemplo (las medidas no son exactas; hubo muchos ajustes involucrados):

 bounding_box([0, cursor], width: 35) do image open("http://mysite.com/remote_image.jpg"), fit: [35, 35], align: :center move_up 35 transparent(0) do formatted_text([{ text: "

“, # placeholder size: 40, link: “http://example.com/” }], align: :center) end # stroke_bounds end

No hace falta decir que esta experiencia me ha hecho mirar un poco más a Wicked PDF para hacer lo que creo que quiero hacer con los PDF.

Estoy seguro de que existe una solución mejor / más elegante, por lo que no pienso considerar esta como mi respuesta final.