J'ai ajouté une fonction de sortie PDF en utilisant les gemmes wicked_pdf
et wkhtmltopdf-binary
, mais l'erreur suivante se produit dans l'environnement de production bien qu'elle fonctionne bien dans l'environnement de développement.
La version Rails est 4.2.
RuntimeError (Failed to execute:
["/var/www/~~~/shared/bundle/ruby/2.4.0/gems/wkhtmltopdf-binary-0.12.6.3/bin/wkhtmltopdf", "--encoding", "UTF-8", "--page-size", "A4", "file:////tmp/wicked_pdf20201007-11835-gppxfs.html", "/tmp/wicked_pdf_generated_file20201007-11835-j83wu8.pdf"]
Error: PDF could not be generated!
Command Error: /var/www/~~~/shared/bundle/ruby/2.4.0/gems/wkhtmltopdf-binary-0.12.6.3/bin/wkhtmltopdf_centos_7_amd64: error while loading shared libraries: libpng15.so.15: cannot open shared object file: No such file or directory
):
Il semble qu'il n'y ait pas de bibliothèque appelée libpng15.so.15
, mais j'ai cherché sur le net la même erreur et essayé diverses choses, mais cela n'a pas résolu.
Ceci est un article de 2016, mais ce qui suit a été utile. https://qiita.com/s-mori/items/00aef46e6a10499f8254 https://qiita.com/yaboojp/items/526c9397070ca5d05256
wkhtmltopdf-binary
ne semble pas prendre en charge Amazon Linux,
Cela a bien fonctionné en utilisant wkhtmltopdf-binary-aml
qui est compatible avec Amazon Linux.
Gemfile avant modification
gem 'wicked_pdf'
gem 'wkhtmltopdf-binary-aml'
Gemfile modifié
gem 'wicked_pdf'
gem 'wkhtmltopdf-binary-aml', git: 'https://github.com/insphire/wkhtmltopdf-binary-aml'
wicked_pdf
avant modification
config/initializers/wicked_pdf.rb
WickedPdf.config = {
:exe_path => "#{Gem.loaded_specs['wkhtmltopdf-binary'].full_gem_path}/bin/wkhtmltopdf"
}
Modifié wicked_pdf
config/initializers/wicked_pdf.rb
WickedPdf.config = {
:exe_path => "#{Gem.loaded_specs['wkhtmltopdf-binary-aml'].full_gem_path}/bin/wkhtmltopdf"
}
J'ai fait l'installation de bundle pour que la version de Bundler ne change pas.
$ bundle _1.16.1_ install
Lorsque je l'ai déployé dans l'environnement de production, il n'était pas affiché en japonais. Installez donc la police IPA sur le serveur de production.
cd /usr/share/fonts
$ yum install -y ipa-gothic-fonts ipa-mincho-fonts
Comme la mise en page a été interrompue en changeant la police, j'ai pu terminer la fonction de réception en ajustant le CSS, etc.
En passant à un Gem compatible avec Amazon Linux, une erreur se produira cette fois dans l'environnement de développement.
RuntimeError - PDF could not be generated!
Command Error: /Users/~~~/vendor/bundle/ruby/2.4.0/bundler/gems/wkhtmltopdf-binary-aml-e5340ed88aa8/bin/wkhtmltopdf:15:in `exec': Bad CPU type in executable - /Users/~~~/vendor/bundle/ruby/2.4.0/bundler/gems/wkhtmltopdf-binary-aml-e5340ed88aa8/libexec/wkhtmltopdf-darwin-x86 (Errno::E086)
Pour bien le faire dans les environnements de développement et de production, vous pouvez utiliser ʻif Rails.env.production? Etc. pour séparer
wicked_pdf.rb`.
Vous pouvez le faire en changeant le Gemfile pour chaque environnement comme suit.
group :development do
gem 'wkhtmltopdf-binary'
end
gem 'wkhtmltopdf-binary', group: :development
Recommended Posts