0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ubuntuサーバでexcelファイルをpdfで変換

Last updated at Posted at 2024-04-08

トイ・プロジェクトどしてubuntuサーバでexcelファイルをpdfで変換しようとしました。

excelファイルをpdfに変換の際、よく使われる方法はpywin32を用いてpdfで変換するのですが、問題は

windows OS だけで動く

のが問題でした。僕の場合はLinuxで動作するのが必要でした。

なので探した方法は二つがありました。

1. Adobe Developer site のAPIを利用する。

Adobe Developer Siteを見るとpdf関連apiをAdobe社が提供することがわかります。自分が開発者で登録してAPIキーをもらって使います。珍しいのはAPIがzipファイルで提供されますが、このAPIキーがそのまま適用されています。別に設定ファイルを触る必要はないです。

java, nodejs, ・netは全部支援し、pythonはpdfからテキストを洗いだすのみ支援するので注意して下さい。

2. unoserverを設置して利用する

Adobeの開発者で登録するのは有効期間があって更新するべきし、言語の制約もあるのでちょっと不便です。それで改めて探した方法はubuntu用のlibreofficeを使用することでした。

でもpdf変換のためにlibreoffice全体をインストールするのはかなり時間もかかるし、サイズも大きいです。そのためlibreofficeの変換機能だけをREST APIで提供するのがunoserverです。これをdocker container化して誰かがhub.docker.comで共有しました。

適当なAlphine versionを選択して(ここには「edge」を選びました)docker pullをもらってdocker containerを立ち上げます。内部ポートは2004番を使うのでポート・マッピングを2004でさせました。

docker pull libreofficedocker/libreoffice-unoserver:edge
docker run -d --name unoserver -p 2004:2004 libreofficedocker/libreoffice-unoserver:edge

これでunoserverをubuntuサーバに立ち上げました。

さ…簡単にテストをやってみましょう。クライアントはcurlを用いました。exceltest.xlsxをfile.pdfで変換の結果は下のようです。

curl -s -v \
   --request POST \
   --url http://127.0.0.1:2004/request \
   --header 'Content-Type: multipart/form-data' \
   --form "file=@/home/ubuntu/exceltest.xlsx" \
   --form 'convert-to=pdf' \
   --output 'file.pdf'

遂行結果は下のようです。

*   Trying 127.0.0.1:2004...
* Connected to 127.0.0.1 (127.0.0.1) port 2004 (#0)
> POST /request HTTP/1.1
> Host: 127.0.0.1:2004
> User-Agent: curl/7.81.0
> Accept: */*
> Content-Length: 39785
> Content-Type: multipart/form-data; boundary=------------------------996e3a5643b7c2b7
>
} [39785 bytes data]
* We are completely uploaded and fine
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Accept-Ranges: bytes
< Content-Length: 157671
< Content-Type: application/pdf
< Last-Modified: Mon, 01 Apr 2024 15:39:51 GMT
< Date: Mon, 01 Apr 2024 15:39:51 GMT
<
{ [3917 bytes data]
* Connection #0 to host 127.0.0.1 left intact

file.pdfが正確にできました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?