[RUBY] Rails ne peut pas générer de PDF dans l'environnement de production (EC2, Amazon Linux)

La sortie PDF n'est pas possible dans l'environnement de production (EC2, Amazon Linux)

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.

Changer de gemme et résoudre

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

Supporte l'affichage japonais

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.

Erreur dans l'environnement de développement

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

Rails ne peut pas générer de PDF dans l'environnement de production (EC2, Amazon Linux)
[Rails] Comment exécuter "rails db: create" etc. dans l'environnement de production EC2
[Rails] Réinitialisez la base de données dans l'environnement de production
tutoriel rails À propos de l'activation de compte dans l'environnement de production
Connexion SSL Rails5.1 + puma dans un environnement de production local
Une erreur de serveur interne 500 se produit dans l'environnement de production Rails
[Note] Créez un environnement Python3 avec Docker dans EC2
Japaneseize en utilisant i18n avec Rails
[Docker] Construction de l'environnement Rails 5.2 avec docker
Créer une base de données dans un environnement de production
[Grover] Générer un PDF avec des rails [version 2020]
Sortie PDF et TIFF avec Java 8
[Construction de l'environnement avec Docker] Rails 6 et MySQL 8
[Rails 6] Personnaliser Bootstrap dans l'environnement Rails + Bootstrap 5.0.0-alpha
[Rails] Construction de l'environnement d'instance AWS EC2
Paramètres à définir lors de l'exploitation d'un environnement de production avec Rails
[Rails] À propos de l'erreur selon laquelle l'image n'est pas affichée dans l'environnement de production