TOPページ / 徒然なるままに

2016/09/17(土)

Raspberry PiでExcelをPDF化&自動プリントアウト

Raspberry Pi、数千円で購入できるARM(ARMアーキテクチャ)ベースの小型軽量ボードコンピュータです。
RaspbianをはじめLinuxが動作するのでちょっとしたサーバとしても使えますし、GPIOを利用して電子工作用のコンピュータとしても使えます。
Raspberry PiをWebサーバとして動作させプログラムで(Excelを自動生成し、)Excelを自動でPDF化し、そのPDFをネットワークプリンタで自動印刷させてみました。便利な機能ですが、それなりにLinuxに関する知識は必要なのであしからず。プログラムでExcelを生成する方法はプログラミング言語によっていろいろあるようですし他にまかせて(サーバサイドでExcelブックを生成するいくつかの方法等参照)、外部プログラム実行機能を利用してPDF化とプリントアウトについて個人的メモ。(リリース日が2016-05-27のraspbian軽量版RASPBIAN JESSIE LITEを利用した場合)

・ExcelのPDF化はLibreOfficeを利用。(なのですべてのExcelがうまくPDF化できるかどうかは不明)
RaspbianはDebian系Linuxなので

#sudo apt-get install libreoffice
でインストール。

コマンドライン

#sudo soffice --headless --convert-to pdf --outdir (出力先ディレクトリ) (エクセルファイル)

でExcelファイルをPDF化、出力先ディレクトリに保存できます。(コマンドラインで実行する場合のパラメータ等はStarting the LibreOffice Software With Parametersを参照)
ただ注意点があり、プログラムでApache HTTP Serverなどを利用してWebサーバ上で自動実行するにはroot権限が必要。visudoでsudoの利用権限の追加が必要なようです。(RaspbianでWebサーバとしてApacheを利用する場合は、www-dataにsudoが利用できる権限を付与。)プログラムで自動実行する場合は下記をプログラム内で実行します。

sudo /usr/bin/soffice --headless --convert-to pdf --outdir (出力先ディレクトリ) (エクセルファイル)

・PDFの印刷はCUPS(Common Unix Printing System)とlp(lpr)コマンドを利用。

#sudo apt-get install cups
#sudo apt-get install lpr
でインストール。

CUPSにはWebブラウザでプリンタの設定ができる機能があるので利用すればわりと簡単にプリンタの登録管理ができます。
ちなみに、自宅で使用している激安で買ったインクジェットプリンタ、HP ENVY 4500。現段階でapt-getでインストールできるCUPSのバージョンではプリンタドライバの登録がありませんでした。(HPの製品だったので#sudo apt-get install hplipでインストール、選択できるように。)大抵メーカーのホームページ等で提供されているようですが、Linux用プリンタドライバ(PPDファイル)があるか要確認でしょうか。複合機だとステープラー(ホチキス止め)までコントロールできたりするみたい。
コマンドライン

#lp -d (CUPSで登録したプリンタ名) (PDFファイル)

でPDFファイルを指定のプリンタから印刷することができます。
プログラム内で実行する場合は、

/usr/bin/lp -d (CUPSで登録したプリンタ名) (PDFファイル)

つまりLinux上で動作する、外部プログラム実行機能を持ったプログラミング言語で上記を順番に実行(当然PDFの生成確認も)するようにプログラミングすれば、Excelの自動PDF化とPDFの自動印刷がわりと簡単にできるというわけです。いろいろ応用できるかと。(Excelの自動生成を含めると、1つの操作で同じ内容のExcelファイルとPDFファイル、プリントアウトされた紙が揃います。)
Raspberry PiではPDFの生成に若干時間がかかる気が。ただ、Raspberry Piで実行できるのでRaspberry Pi以上のスペックのサーバであれば言うまでもなくという事で。


Blog

CCNA(Cisco Certified Network Associate)取得を目指している取得した取得後有効期限満了したぎりぎり20代30代突入30代30代後半40代突入管理人のブログです。

Recent Entries

Google Maps API

googlemap.jpg
地図 ブログ

 

Twitter

Category

Monthly Archives