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?

16
demandé sur Oxfist 2010-04-26 23:13:13

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.

8
répondu Unixmonkey 2012-12-19 18:55:16

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.

4
répondu Amala 2012-12-19 17:30:23

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"
3
répondu Myst 2015-06-01 14:23:45

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

1
répondu Nick Hammond 2010-06-03 05:35:40

Utiliser Ruport .

1er résultat pour googler ruby pdf watermark .

-2
répondu mcandre 2018-03-09 05:05:35