Filigrane en PDF existant en Ruby
je voudrais ajouter un texte généré dynamiquement. Y a-t-il un moyen de filigraner un PDF existant dans Ruby?
5 réponses
Cela va faire:
PDF::Reader
pour compter le nombre de pages du fichier.
Prawn
créer un nouveau document PDF en utilisant chaque page du PDF d'entrée comme modèle.
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
cependant, dans mes essais, la taille du fichier de sortie était énorme avec la dernière version Gem de Prawn (0.12), mais après avoir pointé mon fichier Gemfile sur la branche principale de github, tout fonctionnait bien.
une autre option est D'utiliser PDFTK. Il peut être utilisé pour ajouter un filigrane et créer un nouveau PDF. Peut-être que les crevettes feront la même chose avec leurs temples.
pdftk in.pdf background arecibo.pdf output wmark1.pdf
plus d'informations: http://rhodesmill.org/brandon/2009/pdf-watermark-margins /
il y a une gemme ruby wrapper appelée active_pdftk qui prend en charge le background, donc vous n'avez pas à faire le shell commandes vous-même.
Prawn ne supporte plus les gabarits...
Essayez le combine_pdf gem .
vous pouvez combiner, filigrane, numéro de page et ajouter du texte simple aux fichiers PDF existants (y compris la création d'une table des matières simple sans liens PDF).
c'est une bibliothèque PDF très simple et basique, écrite en rubis PUR sans dépendances.
cet exemple peut s'adapter à votre situation extrait du fichier readme):
# 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"
Check out Prawn ( http://github.com/sandal/prawn ) pour just ruby et Prawnto ( ) http://github.com/thorny-sun/prawnto ) pour rubis sur Rails.
vous allez probablement vouloir utiliser la fonctionnalité d'intégration d'image ou la fonctionnalité d'image de fond.
voici un exemple d'utilisation d'une image de fond http://cracklabs.com/prawnto/code/prawn_demos/source/general/background