You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
module RenderExpand
extend ActiveSupport :: Concern
included do
ActionController . add_renderer :pdf do | template , options |
file = File . open ( Rails . root . join ( 'app/templates' , template << '.html.erb' ) )
html = ERB . new ( file . read ) . result ( binding )
kit = PDFKit . new ( html )
base_css = %w( app/templates/shared/main.css )
base_css . each { | css | kit . stylesheets << Rails . root . join ( css ) }
Array . wrap ( options . delete ( :stylesheets ) ) . each do | path |
kit . stylesheets << Rails . root . join ( 'app/templates' , path )
end
send_data kit . to_pdf , filename : options [ :filename ] , disposition : options [ :disposition ] || 'attachment' , type : 'application/pdf'
end
ActionController . add_renderer :exam_pdf do | template , options |
file = File . open ( Rails . root . join ( 'app/templates' , template << '.html.erb' ) )
html = ERB . new ( file . read ) . result ( binding )
kit = PDFKit . new ( html )
# PDFKit初始化后再添加样式文件到stylesheets, 会出现在页面的<!DOCTYPE>定义不起作用, 文档模式为默认为BackCompat, 从而导致katex不起作用
# 而测试发现通过配置添加css样式文件不会有影响
PDFKit . configure do | config |
config . default_options = {
:" user-style-sheet " = > Rails . root . join ( 'app/templates' , options [ :stylesheets ] )
}
end
send_data kit . to_pdf , filename : options [ :filename ] , disposition : options [ :disposition ] || 'attachment' , type : 'application/pdf'
end
end
end