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