Есть ли способ окупить существующий pdf файл в рубине?
Я хочу добавить динамически сгенерированный текст,
Спасибо,
Есть ли способ окупить существующий pdf файл в рубине?
Я хочу добавить динамически сгенерированный текст,
Спасибо,
Это будет сделано:
PDF::Reader
, чтобы подсчитать количество страниц в файле.
Prawn
, чтобы создать новый PDF-документ, используя каждую страницу входного pdf в качестве шаблона.
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
Тем не менее, в моем тестировании размер выходного файла был огромным с последней версией Gem версии Prawn (0.12), но после указания моего Gemfile на главной ветке на github все работало нормально.
Другой вариант - использовать PDFTK. Его можно использовать для добавления водяного знака и создания нового PDF файла. Возможно, креветка сделает то же самое с шаблоном.
pdftk in.pdf background arecibo.pdf output wmark1.pdf
Дополнительная информация: http://rhodesmill.org/brandon/2009/pdf-watermark-margins/
Существует драгоценный камень ruby wrapper, называемый active_pdftk, который поддерживает фоновое отображение, поэтому вам не нужно выполнять команды оболочки самостоятельно.
Посмотрите креветку (http://github.com/sandal/prawn) только для рубинов и праунто (http://github.com/thorny-sun/prawnto) для Ruby on Rails.
Вероятно, вам захочется использовать функциональность встраивания изображений или функциональность фонового изображения.
Вот пример использования фонового изображения http://cracklabs.com/prawnto/code/prawn_demos/source/general/background
Креветка больше не поддерживает шаблоны...
Попробуйте comb_pdf gem.
Вы можете комбинировать, водяной знак, номер страницы и добавлять простой текст в существующие файлы PDF (включая создание простого оглавления без ссылок PDF).
Это очень простая и основная библиотека PDF, написанная в чистом Ruby без зависимостей.
Этот пример может соответствовать вашей ситуации (он из файла 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"
Используйте Ruport.
1-й результат для Googling ruby pdf watermark
.