2010-04-26 8 views

Antwort

8

es Dies tun:

PDF::Reader die Anzahl der Seiten in der Datei zu zählen.

Prawn erstellen Sie ein neues PDF-Dokument mit jeder Seite der Eingabe-PDF als Vorlage.

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 

jedoch in meiner Prüfung die Größe der Ausgabedatei mit der neuesten Version von Gem Garnelen war riesig (0,12), aber nach meiner Gemfile am Master-Zweig auf Github zeigt, alle funktionierten gut.

+0

Sie können die Option ': template' an' Prawn :: Document' übergeben und dann einfach die Seiten auf diese Weise durchlaufen. Dadurch wird die Größe der Ausgabedatei viel näher an der Eingabedateigröße liegen. – siannopollo

+0

Prawn unterstützt nicht mehr das Bearbeiten/Kombinieren von zwei PDFs zu einem. Überprüfen Sie die Antwort von @Myst auf eine aktuelle Lösung. –

-1

Verwenden Sie Ruport.

1. Ergebnis für Googling ruby pdf watermark.

+0

Duh ... zeigt nur die Grenzen von Google. Ich suche nach dem gleichen Ding, und Ruport ist es nicht. – John

+0

'+ ruby ​​+ pdf + wasserzeichen -ruport': –

+0

Ruport verwendet PDF :: Writer. PDF :: Writer erstellt nur PDFs. No Go. –

1

Check out Garnele (http://github.com/sandal/prawn) für nur Rubin und Prawnto (http://github.com/thorny-sun/prawnto) für Ruby on Rails.

Wahrscheinlich werden Sie entweder die Bildeinbettungsfunktionalität oder die Hintergrundbildfunktionalität verwenden wollen.

Hier ist ein Beispiel eines Hintergrundbild verwenden http://cracklabs.com/prawnto/code/prawn_demos/source/general/background

+0

Prawn kann nur Bilder in ein neues PDF einbetten, das mit Garnelen erstellt wurde, nicht mit einem existierenden ... also funktioniert es nicht für mich. – Mike

+0

ah, verpasste den * vorhandenen * Teil in deinem Beitrag. Das tut mir leid. Ich glaube nicht, dass es da ist, außer du würdest es in ein Bild umwandeln und es dann mit Wasserzeichen versehen. –

+0

Tatsächlich scheint es, dass Prawn eine vorhandene PDF bearbeiten kann, wenn Sie diese PDF als Vorlage verwenden: http://groups.google.com/group/prawn-ruby/browse_thread/thread/a8dd9bb83d2c2abd?pli = 1 & https://github.com/yob/prawn/tree/templates_2010. Ich habe diese nicht persönlich benutzt, aber die Informationen scheinen etwas neu zu sein? –

3

Eine weitere Option ist PDFTK zu verwenden. Es kann verwendet werden, um ein Wasserzeichen hinzuzufügen und ein neues PDF zu erstellen. Vielleicht wird Garnelen mit dem Templating das Gleiche tun.

pdftk in.pdf background arecibo.pdf output wmark1.pdf

Einige weitere Informationen: http://rhodesmill.org/brandon/2009/pdf-watermark-margins/

Es ist ein Rubin-Wrapper Juwel namens active_pdftk die Backgrounding unterstützt, so dass Sie sich die Schale nicht selbst tun Befehle.

1

Garnelen nicht Vorlagen nicht mehr unterstützen ...

die combine_pdf gem Versuchen.

Sie können Wasserzeichen, Seitennummer und einfachen Text zu vorhandenen PDF-Dateien kombinieren (einschließlich der Erstellung eines einfachen Inhaltsverzeichnisses ohne PDF-Verknüpfungen).

Es ist eine sehr einfache und einfache PDF-Bibliothek, geschrieben in reinem Rubin ohne Abhängigkeiten.

Dieses Beispiel kann Ihre Situation (es ist aus der Readme-Datei) passen:

# 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" 
Verwandte Themen