ruby on rails - Marca de agua en PDF existente en Ruby
ruby-on-rails prawn (5)
Me gustaría añadir un texto generado dinámicamente. ¿Hay alguna forma de filtrar un PDF existente en Ruby?
Echa un vistazo a Prawn ( http://github.com/sandal/prawn ) solo para ruby y Prawnto ( http://github.com/thorny-sun/prawnto ) para Ruby on Rails.
Es probable que desee utilizar la funcionalidad de incrustación de imagen o la funcionalidad de imagen de fondo.
Aquí hay un ejemplo del uso de una imagen de fondo http://cracklabs.com/prawnto/code/prawn_demos/source/general/background
Esto lo hará:
PDF::Reader
para contar el número de páginas en el archivo.
Prawn
para crear un nuevo documento PDF utilizando cada página del PDF de entrada como plantilla.
require ''prawn''
require ''pdf-reader''
input_filename = ''input.pdf''
output_filename = ''output.pdf''
page_count = PDF::Reader.new(input_filename).page_count
Prawn::Document.generate(output_filename, :skip_page_creation => true) do |pdf|
page_count.times do |num|
pdf.start_new_page(:template => input_filename, :template_page => num+1)
pdf.text(''WATERMARK'')
end
end
Sin embargo, en mi prueba, el tamaño del archivo de salida fue enorme con la última versión de Gema de Prawn (0.12), pero después de apuntar mi Gemfile a la rama maestra en github, todo funcionó bien.
Otra opción es utilizar PDFTK. Se puede usar para agregar una marca de agua y crear un nuevo PDF. Tal vez la gamba hará lo mismo con sus plantillas.
pdftk in.pdf background arecibo.pdf output wmark1.pdf
Un poco más de información: http://rhodesmill.org/brandon/2009/pdf-watermark-margins/
Hay una gema de active_pdftk llamada active_pdftk que admite el fondo, por lo que no tiene que hacer usted mismo los comandos de shell.
Prawn ya no soporta plantillas ...
Intente la gema combine_pdf .
Puede combinar, marca de agua, número de página y agregar texto simple a los archivos PDF existentes (incluida la creación de una tabla de contenido simple sin enlaces PDF).
Es una biblioteca de PDF muy simple y básica, escrita en Ruby puro sin dependencias.
Este ejemplo puede adaptarse a su situación (es del archivo Léame):
# load the logo as a pdf page
company_logo = CombinePDF.load("company_logo.pdf").pages[0]
# load the content file
pdf = CombinePDF.load "content_file.pdf"
# inject the logo to each page in the content
pdf.pages.each {|page| page << company_logo}
# save to a new file, with the logo.
pdf.save "content_with_logo.pdf"
Utilice Ruport .
1er resultado para Google ruby pdf watermark
.