5

sample.erb.html

<p>Page 1</p1>

<p>Page 2</p2>

というわけで、 「Page 1」以降はすべて2ページ目に印刷したい。

これどうやってするの?

SOには1つの解決策がありますが、うまくいきませんでした。

たとえば、Prawn の場合、start_new_pageという便利な機能があります。

4

4 に答える 4

4

あなたのCSSで

p{page-break-after: always;}

アップデート

いくつかの質問の後、回答とそれをアプリでどのように使用するかについて説明します。

1 wickedpdf ヘルパーが機能しない場合があるため、初期化子を追加します

_config/initializers/wiked_pdf.rb_

module WickedPdfHelper
  def wicked_pdf_stylesheet_link_tag(*sources)
    sources.collect { |source|
      "<style type='text/css'>#{Rails.application.assets.find_asset("#{source}.css")}</style>"
    }.join("\n").gsub(/url\(['"](.+)['"]\)(.+)/,%[url("#{wicked_pdf_image_location("\\1")}")\\2]).html_safe
  end

  def wicked_pdf_image_tag(img, options={})
    image_tag wicked_pdf_image_location(img), options
  end

  def wicked_pdf_image_location(img)
    "file://#{Rails.root.join('app', 'assets', 'images', img)}"
  end

  def wicked_pdf_javascript_src_tag(source)
    "<script type='text/javascript'>#{Rails.application.assets.find_asset("#{source}.js").body}</script>"
  end

  def wicked_pdf_javascript_include_tag(*sources)
    sources.collect{ |source| wicked_pdf_javascript_src_tag(source) }.join("\n").html_safe
  end

  WickedPdf.config = {

  }
end

2 アプリケーションコントローラーで、一般的な構成パラメーターを使用して構成メソッドを作成します

_app/controllers/application_controller.rb_

class ApplicationController < ActionController::Base
  def pdf_config
    WickedPdf.config = {
        :wkhtmltopdf => "/usr/local/bin/wkhtmltopdf",
        :orientation  => 'Landscape',
        :layout => "pdf.html",
        :footer => {
            :left => "Rectores Lideres Transformadores",
            #:left => "#{Entidad.find(@current_user.entidad).nombre}",
            :right => "#{Time.now}",
            :font_size => 5,
            :center => '[page] de [topage]'
        },
        :disposition => 'attachment'

    }
  end

end

3 すべての PDF ファイルに共通のレイアウトを作成します。ここでは、アプリケーションの css を使用して、pdf レポートの Web ページと同じルック アンド フィールを維持します。同じクラスと ID を使用するだけで済みます。

アプリ/レイアウト/pdf.html.erb

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <%= wicked_pdf_stylesheet_link_tag "application" %> ----- HERE YOUR APPLICATION CSS -----
</head>
<div id="content">
  <%= yield %>
</div>
</body>
</html>

4 コントローラーに pdf リダイレクトを追加する

_app/controllers/users_controller.rb_

 def index
    @users = User.all

    respond_to do |format|
      format.pdf do
        pdf_config
        render  :pdf => "filename"
      end
    end
  end

5 次に、CSS で、どの html ID がページ ブレーキかを選択します

 #brake{page-break-after: always;}
于 2013-08-09T01:56:39.707 に答える
1

私は同じ問題を抱えていて、役立つかもしれない何かを発見しました。これは私の改ページCSSコードでした:

.page-break {
  display: block;
  clear: both;
  page-break-after: always;
}

これは、次の2 つの理由で機能しませんでした。

I. SASSインポートファイルの1つに、次のコード行がありました。

html, body
  overflow-x: hidden !important

Ⅱ.他の問題はブートストラップでした

@import "bootstrap"

次のように見えますfloat: left

.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
  float: left;
}

改ページが機能しなくなりました。したがって、ブートストラップをインポートした後にこれを追加するだけです。

.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
  float: initial !important;
}
于 2014-08-27T10:26:26.243 に答える