Power BI のグラフを SNS 用の画像にする手順。PDF に書き出して切り取る


Power BI で作ったグラフを、SNS に投稿したい。スクリーンショットだと、画面の解像度や余白に左右されるので、私は ページのサイズを決めて、PDF に書き出し、画像にする方法にしました。その手順をまとめます。

確認日: 2026年10月18日(日本語版の Power BI Desktop)。操作の説明は、Microsoft Learn と実際の画面で確認した内容です。

全体の流れ

  1. レポートのページを、投稿したい画像のサイズ(1080×1350 ピクセル)にする
  2. 文字を、スマホで読める大きさにする
  3. Power BI Desktop から PDF に書き出す
  4. PDF を画像にして、余白を切り取り、1080×1350 に揃える

出来上がりは、こんな画像です(長崎県の市町ごとの転入超過率)。

Power BI Desktop で作って PDF に書き出し、画像にした 1080×1350 の棒グラフ。出典と注意書きも画像の中に入れている

出典と注意書きも、画像の中に入れています。SNS では、画像だけが切り離されて広まることがあるからです。

1. ページのサイズを決める

ページの何も選択していない状態で、右側の「視覚化」ペインから 「ページの書式設定」(筆のアイコン)を開き、「キャンバスの設定」 を広げます。「型」を 「カスタム」 にすると、「幅 (px)」「高さ (px)」 を入力できます。

キャンバスの設定。「型」の選択肢は 16:9、4:3、レター、ツールヒント、カスタム。カスタムを選ぶと、幅と高さをピクセルで入力できる

ここに、幅 1080、高さ 1350 を入れました(4:5 の縦長です)。図の数字は、まだ何も変えていない既定値(1920×1080)です。

試したときに分かったことが、1つあります。高さに大きすぎる値を入れると、9999 に丸められました。 桁を入れ間違えたときは、欄の数字を確認してください。

公式の注意

Microsoft Learn の PDF 書き出しのページには、次の注意があります。

Reports with unusual custom page sizes may experience issues in export scenarios. For best results, consider switching to a standard page size for your report. (特殊なカスタムのページサイズでは、書き出しに問題が出ることがあります。標準のページサイズに切り替えることを検討してください。)

今回の 1080×1350 では、書き出した PDF の2ページとも、崩れずに出力されました。ただし、サイズによっては問題が出る可能性があるので、必ず出力を目で確認してください。

2. 文字を大きくする

投稿画像は、スマホの小さな画面で見られます。私は、本文・軸・凡例を 21pt にしました。1080 ピクセル幅のページでは、21pt が約 28 ピクセルにあたります(1pt = 約 1.33 ピクセル)。

小さい文字は、画像を縮小して表示されたときに、まず読めなくなります。

3. PDF に書き出す

Power BI Desktop で、[ファイル] > [エクスポート] > [PDF にエクスポート] を選びます(Microsoft Learn の手順どおりです)。

書き出しについて、公式ドキュメントに次の説明があります。

  • レポートの 1ページが、PDF の1ページになります。
  • 今表示されていないページ(ツールヒントのページや、非表示のページ)は、書き出されません。
  • 壁紙は書き出されません。 暗い壁紙の上に白い文字を置いていると、書き出した PDF では読めなくなります。
  • 書き出される PDF には、上下に白い余白の帯が入ります。
  • カスタムビジュアル(認定されていないもの)や ArcGIS などは、非対応です。

また、書き出し中は、レポートの操作ができなくなります。終わるまで待ちます。

4. PDF を画像にして、余白を切る

書き出した PDF を、そのまま画像にすると、余白が付いたままで、サイズも 1080×1350 になりません。私の場合、書き出した PDF の1ページは 846 × 1048 pt(縦横比 0.807) で、目標の 1080:1350(= 0.8)とずれていました。

そこで、Python と PyMuPDF で、画像にして、白い余白を切り取り、1080×1350 に縮小しました。

左: PDF に書き出した直後の画像。白い余白があり、赤枠が切り取る範囲。右: 切り取って 1080×1350 に縮小した画像

処理の中心は、次の部分です。

import pymupdf
from PIL import Image
import numpy as np

doc = pymupdf.open("export.pdf")
for i, page in enumerate(doc):
    pix = page.get_pixmap(dpi=288)  # 高めの解像度で画像にする
    im = Image.frombytes("RGB", (pix.width, pix.height), pix.samples)

    # 白に近くない部分(=ページの背景)の外接矩形を求める
    a = np.asarray(im).astype(int)
    nonwhite = np.abs(a - 255).sum(axis=2) > 12
    ys, xs = np.where(nonwhite)
    box = (xs.min(), ys.min(), xs.max() + 1, ys.max() + 1)

    # 切り取って、1080x1350 に縮小
    im.crop(box).resize((1080, 1350), Image.LANCZOS).save(f"page{i + 1}.png")

ページの背景を、真っ白ではなく薄い灰色にしておくのが、ポイントです。白い余白と背景の境目を、「白に近いかどうか」で判定できるからです。背景が真っ白だと、この方法では、余白と区別できません。

私の PDF で試すと、画像にしたときのサイズは 3384 × 4193 ピクセル(288 dpi)、切り取る範囲は 3236 × 4047 ピクセルで、縦横比は 0.7996 でした。1080:1350(= 0.8)にほぼ一致するので、縮小しても、縦横が歪みません。

画質について

PDF の中身を調べると、文字は選択できて、埋め込まれた画像はありませんでした(ベクターで描かれています)。そのため、PDF の段階では、拡大してもぼやけません。一方、1080×1350 の画像に縮小した時点で、PDF より粗くなります。印刷などにも使うなら、PDF のほうを使ってください。

注意したいこと

  • ツールと画面は変わります。 設定の名前や位置は、バージョンによって変わることがあります。
  • 地図のビジュアルは、環境によって描画されないことがあります。 私は、地図を使わず、棒グラフで見せました。詳しくは、マップが表示されないときに、最初に確認する設定に書きました。
  • SNS の推奨サイズは変わります。 投稿する前に、各サービスの最新の案内を確認してください。
  • データの出典と、集計の注意書きは、画像の中に入れておくほうが安全です。

この記事で確認できたこと・できていないこと

確認できたこと

  • ページの書式設定にある「キャンバスの設定」の画面と、選択肢(実際の画面)
  • 書き出した PDF の中身(2ページ、ベクター、縦横比、余白)と、切り取りの処理の結果(同じ処理を再実行して確認)
  • 記事に載せたコードを、実際の PDF で実行すると、プロジェクトで作った画像と画素単位で同じ画像が出力されること
  • PDF 書き出しの仕様(Microsoft Learn の記載)

確認できていないこと

  • 今回、PDF の書き出しそのものは、記事のために再実行していません。使ったのは、以前に書き出した PDF です。
  • 他の PC や、他のバージョンの Power BI Desktop での動作
  • 英語版での設定名

参考