19

動的に生成されたテキストを追加したいと思います。Rubyで既存のPDFに透かしを入れる方法はありますか?

4

5 に答える 5

10

これはそれを行います:

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

ただし、私のテストでは、出力ファイルのサイズは Prawn の最新の Gem バージョン (0.12) で巨大でしたが、Gemfile を github の master ブランチにポイントした後、すべて正常に動作しました。

于 2012-12-19T18:55:16.607 に答える
5

もう1つのオプションは、PDFTKを使用することです。透かしを追加したり、新しいPDFを作成したりするために使用できます。たぶん、エビはそれがテンプレートを使っているのと同じことをするでしょう。

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

さらに詳しい情報: http: //rhodesmill.org/brandon/2009/pdf-watermark-margins/

バックグラウンドをサポートするactive_pdftkと呼ばれるrubyラッパーgemがあるので、シェルコマンドを自分で実行する必要はありません。

于 2012-12-19T17:12:54.217 に答える
5

エビはもうテンプレートをサポートしていません...

Combine_pdf gemを試してください。

結合、透かし、ページ番号、および既存の PDF ファイルへの単純なテキストの追加 (PDF リンクのない単純な目次の作成を含む) ができます。

これは、依存関係のない純粋な Ruby で書かれた、非常にシンプルで基本的な PDF ライブラリです。

この例は、状況に適合します (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"
于 2014-12-07T11:12:53.690 に答える
1

ruby のみの場合は Prawn ( http://github.com/sandal/prawn )を、Ruby on Rails の場合はPrawnto ( http://github.com/thorny-sun/prawnto ) を確認してください。

おそらく、画像埋め込み機能または背景画像機能のいずれかを使用したいと思うでしょう。

背景画像を使用する例を次に示します http://cracklabs.com/prawnto/code/prawn_demos/source/general/background

于 2010-06-03T05:35:40.123 に答える
-5

Ruportを使用します。

グーグル の 1 番目の結果ruby pdf watermark

于 2010-05-25T18:08:39.253 に答える