wicked_pdf로 콘솔에서 PDF를 만들고 싶어요.
5766 단어 Rails
입문
wicked_pdf에서 컨트롤러에서 PDF를 만들고 싶은 상황을 만났기 때문에 비망록을 만들어 Qiita에 기사를 남겼습니다.
환경
Ruby 2.6.5
Rails 5.2.4
wicked_pdf 1.1.0
wicked_무엇이 pdf입니까?
Rails로 PDF를 출력할 때 사용하는 Gem은 HTML을 쓰듯이 PDF를 만들 수 있습니다.
PDF를 만드는 Gem도 있습니다Prawn. 하지만 Prawn은 고리고리의 DSL이기 때문에 자유도가 높지만 학습 비용이 필요합니다.
wicked_우리 집 자료고는 여기에 있다
https://github.com/mileszs/wicked_pdf
전제 조건
app/views/users/profile_pdf.pdf.슬림이라는 서류가 있어요. 안에 있어요.h1 = @user.name
h3
メールアドレス
p = @user.email
h3
プロフィール
p = @user.profile
에서 설명한 대로 해당 매개변수의 값을 수정합니다.(안 맞아, 복잡해)
사용자 모델에 이름, 이메일, 간단한 파일이 있다고 가정합니다.
단계 $ rails c
controller = ActionController::Base.new # コントローラーのインスタンスを生成(ActionView::Baseのインスタンス生成に必要なため)
view = ActionView::Base.new(Rails.root.join('app', 'views'), {}, controller) # ビューインスタンスの生成。renderメソッドを呼ぶために使う
view.extend(ApplicationHelper) # viewファイルでHelperを使っている場合に使う。ApplicationHelper以外にもHelperファイルがある場合は、そちらもextendする
pdf = WickedPdf.new.pdf_from_string(
view.render(
template: "users/profile_pdf.pdf.slim", # 自動でviews/配下のファイルを探しに行くため、users/profile_pdf.slimでOK
layout: 'layouts/base_pdf_layout.pdf.slim', # layoutファイルを使わない場合は指定の必要なし
locals: { @user => User.first }, # slimファイル内で変数を使う場合に指定する。
encoding: 'UTF-8'
)
).force_encoding("UTF-8")
save_path = Rails.root.join('tmp', "#{User.first.name}_profile.pdf") # 保存するpathを作成
# Fileクラスを使って保存する処理
# 参考: https://github.com/mileszs/wicked_pdf#super-advanced-usage
File.open(save_path, 'wb') do |file|
file << pdf
end
locals는 @user만 전달되지만 여러 변수를 전달할 수 있습니다.
force_인코딩을 하지 않으면 혼란이 발생합니다.수십 분 동안 녹았어요
생성된 파일은 여기 있습니다.
총결산
방금 소개한 Prawn을 사용할 때 ActionController 또는 ActionView에 의존하지 않고 콘솔에서 PDF를 출력할 수 있지만 wicked_pdf라면 ActionController와 ActionView에 의존하지 않으면 엄격하겠죠.
"PDF를 한꺼번에 꺼내달라"는 의뢰가 의외로 있어 누구에게 참고가 됐으면 좋겠다.
Reference
이 문제에 관하여(wicked_pdf로 콘솔에서 PDF를 만들고 싶어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kk-icare/items/a6cf674418829a0a6a06
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Ruby 2.6.5
Rails 5.2.4
wicked_pdf 1.1.0
wicked_무엇이 pdf입니까?
Rails로 PDF를 출력할 때 사용하는 Gem은 HTML을 쓰듯이 PDF를 만들 수 있습니다.
PDF를 만드는 Gem도 있습니다Prawn. 하지만 Prawn은 고리고리의 DSL이기 때문에 자유도가 높지만 학습 비용이 필요합니다.
wicked_우리 집 자료고는 여기에 있다
https://github.com/mileszs/wicked_pdf
전제 조건
app/views/users/profile_pdf.pdf.슬림이라는 서류가 있어요. 안에 있어요.h1 = @user.name
h3
メールアドレス
p = @user.email
h3
プロフィール
p = @user.profile
에서 설명한 대로 해당 매개변수의 값을 수정합니다.(안 맞아, 복잡해)
사용자 모델에 이름, 이메일, 간단한 파일이 있다고 가정합니다.
단계 $ rails c
controller = ActionController::Base.new # コントローラーのインスタンスを生成(ActionView::Baseのインスタンス生成に必要なため)
view = ActionView::Base.new(Rails.root.join('app', 'views'), {}, controller) # ビューインスタンスの生成。renderメソッドを呼ぶために使う
view.extend(ApplicationHelper) # viewファイルでHelperを使っている場合に使う。ApplicationHelper以外にもHelperファイルがある場合は、そちらもextendする
pdf = WickedPdf.new.pdf_from_string(
view.render(
template: "users/profile_pdf.pdf.slim", # 自動でviews/配下のファイルを探しに行くため、users/profile_pdf.slimでOK
layout: 'layouts/base_pdf_layout.pdf.slim', # layoutファイルを使わない場合は指定の必要なし
locals: { @user => User.first }, # slimファイル内で変数を使う場合に指定する。
encoding: 'UTF-8'
)
).force_encoding("UTF-8")
save_path = Rails.root.join('tmp', "#{User.first.name}_profile.pdf") # 保存するpathを作成
# Fileクラスを使って保存する処理
# 参考: https://github.com/mileszs/wicked_pdf#super-advanced-usage
File.open(save_path, 'wb') do |file|
file << pdf
end
locals는 @user만 전달되지만 여러 변수를 전달할 수 있습니다.
force_인코딩을 하지 않으면 혼란이 발생합니다.수십 분 동안 녹았어요
생성된 파일은 여기 있습니다.
총결산
방금 소개한 Prawn을 사용할 때 ActionController 또는 ActionView에 의존하지 않고 콘솔에서 PDF를 출력할 수 있지만 wicked_pdf라면 ActionController와 ActionView에 의존하지 않으면 엄격하겠죠.
"PDF를 한꺼번에 꺼내달라"는 의뢰가 의외로 있어 누구에게 참고가 됐으면 좋겠다.
Reference
이 문제에 관하여(wicked_pdf로 콘솔에서 PDF를 만들고 싶어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kk-icare/items/a6cf674418829a0a6a06
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
app/views/users/profile_pdf.pdf.슬림이라는 서류가 있어요. 안에 있어요.
h1 = @user.name
h3
メールアドレス
p = @user.email
h3
プロフィール
p = @user.profile
에서 설명한 대로 해당 매개변수의 값을 수정합니다.(안 맞아, 복잡해)사용자 모델에 이름, 이메일, 간단한 파일이 있다고 가정합니다.
단계 $ rails c
controller = ActionController::Base.new # コントローラーのインスタンスを生成(ActionView::Baseのインスタンス生成に必要なため)
view = ActionView::Base.new(Rails.root.join('app', 'views'), {}, controller) # ビューインスタンスの生成。renderメソッドを呼ぶために使う
view.extend(ApplicationHelper) # viewファイルでHelperを使っている場合に使う。ApplicationHelper以外にもHelperファイルがある場合は、そちらもextendする
pdf = WickedPdf.new.pdf_from_string(
view.render(
template: "users/profile_pdf.pdf.slim", # 自動でviews/配下のファイルを探しに行くため、users/profile_pdf.slimでOK
layout: 'layouts/base_pdf_layout.pdf.slim', # layoutファイルを使わない場合は指定の必要なし
locals: { @user => User.first }, # slimファイル内で変数を使う場合に指定する。
encoding: 'UTF-8'
)
).force_encoding("UTF-8")
save_path = Rails.root.join('tmp', "#{User.first.name}_profile.pdf") # 保存するpathを作成
# Fileクラスを使って保存する処理
# 参考: https://github.com/mileszs/wicked_pdf#super-advanced-usage
File.open(save_path, 'wb') do |file|
file << pdf
end
locals는 @user만 전달되지만 여러 변수를 전달할 수 있습니다.
force_인코딩을 하지 않으면 혼란이 발생합니다.수십 분 동안 녹았어요
생성된 파일은 여기 있습니다.
총결산
방금 소개한 Prawn을 사용할 때 ActionController 또는 ActionView에 의존하지 않고 콘솔에서 PDF를 출력할 수 있지만 wicked_pdf라면 ActionController와 ActionView에 의존하지 않으면 엄격하겠죠.
"PDF를 한꺼번에 꺼내달라"는 의뢰가 의외로 있어 누구에게 참고가 됐으면 좋겠다.
Reference
이 문제에 관하여(wicked_pdf로 콘솔에서 PDF를 만들고 싶어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kk-icare/items/a6cf674418829a0a6a06
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ rails c
controller = ActionController::Base.new # コントローラーのインスタンスを生成(ActionView::Baseのインスタンス生成に必要なため)
view = ActionView::Base.new(Rails.root.join('app', 'views'), {}, controller) # ビューインスタンスの生成。renderメソッドを呼ぶために使う
view.extend(ApplicationHelper) # viewファイルでHelperを使っている場合に使う。ApplicationHelper以外にもHelperファイルがある場合は、そちらもextendする
pdf = WickedPdf.new.pdf_from_string(
view.render(
template: "users/profile_pdf.pdf.slim", # 自動でviews/配下のファイルを探しに行くため、users/profile_pdf.slimでOK
layout: 'layouts/base_pdf_layout.pdf.slim', # layoutファイルを使わない場合は指定の必要なし
locals: { @user => User.first }, # slimファイル内で変数を使う場合に指定する。
encoding: 'UTF-8'
)
).force_encoding("UTF-8")
save_path = Rails.root.join('tmp', "#{User.first.name}_profile.pdf") # 保存するpathを作成
# Fileクラスを使って保存する処理
# 参考: https://github.com/mileszs/wicked_pdf#super-advanced-usage
File.open(save_path, 'wb') do |file|
file << pdf
end
방금 소개한 Prawn을 사용할 때 ActionController 또는 ActionView에 의존하지 않고 콘솔에서 PDF를 출력할 수 있지만 wicked_pdf라면 ActionController와 ActionView에 의존하지 않으면 엄격하겠죠.
"PDF를 한꺼번에 꺼내달라"는 의뢰가 의외로 있어 누구에게 참고가 됐으면 좋겠다.
Reference
이 문제에 관하여(wicked_pdf로 콘솔에서 PDF를 만들고 싶어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kk-icare/items/a6cf674418829a0a6a06텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)