0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Streamlit 1.49.0 から PDF ビューワーが正式導入

Last updated at Posted at 2025-11-30

Streamlit は、Python の豊富なサードパーティライブラリを利用して Web アプリケーションを作成できる優れもののフレームワークです。テキスト、JSON、画像、オーディオ、ビデオ、Pandas データフレームはオブジェクトを投入すればそのまま画面に表示されるので、GUI の構築も簡単です。

st.pdf登場

しかし、意外なことに、PDF は表示できませんでした。そのため、サードパーティのコンポーネントを導入したり、PyMuPDF などで画像化してから表示する強引な手がこれまでは必要でした。

しかし、もうそんな手間は不要です。Streamlit 1.49.0(2025年8月29日リリース)から PDF ビューワーの st.pdf が利用できるようになったからです。

image.png

さっそく試そう

データは URL 文字列、ローカルパス文字列、io.BytesIO(あるいはその親戚の UploadedFile)、bytes から引き渡せるので、いつものように st.file_uploader からアップロードするだけです。

import streamlit as st

pdf_file = st.file_uploader('PDFファイルをアップロードしてください',
    type='pdf'
)
if pdf_file:
    st.pdf(pdf_file)

関数オプションは、表示エリアの高さを指定する height しかありません。最大まで引っ張る "stretch" かピクセル値(整数)を指定でき、デフォルトは 500ピクセルです。

あとは動かすだけです。

$ pip install streamlit               # streamlit を導入
$ python -m streamlit run             # サーバをスタート

デフォルトで localhost と自機のローカルインタフェース(eth0など)のポート 8501 にバインドされるので、http://localhost:8501 とかでアクセスできます。

実行例

e-Gov ポータル から適当に見繕ってきた PDF を表示します。

image.png

垂直スクロールバーが出るので、複数ページでも問題なく読めます。デフォルトでは、先頭ページ幅がコンテナサイズに合うように縮小拡大されるようですが、+ーボタンで拡大縮小してくれます。ま、この辺りは、st.dataframeなど他のインタフェースと同じ要領です。

おわりに

Streamlit には Web サーバも含まれているので、ローカルでならすぐにでもサービスを展開できます。インターネットワイドでの展開なら、コミュニティサイトが無料で使えます。たとえば、こんな感じです。

公式サイトの Documentation セクションの Get Started(さぁ、始めよう)はシンプルで、わかりやすいです。英語ですが、AI 翻訳を通せば困りません。日本語でのまとまった情報が入用なら、技術評論社刊の『作ってわかる[入門]Streamlit 〜 Pythonによる実践Webサービス開発』(2024年2月刊)があります。

0
2
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
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?