nambu.devGitHub ↗

SwiftSlides

Swiftで
PowerPointを読み書き

PowerPoint の PPTX を読み取り、スライドを作成して保存する Swift ライブラリです。SwiftSheets・SwiftDocuments と同じように、ファイル形式の違いを共通の値モデルで扱うことを目指しています。

開発中・未リリースです。API は今後変更される可能性があります。

オープンソース / MIT Swift 6.2+macOS 14+ / iOS 17+

読み取りから、作成・保存まで

ビジネス資料を組み立てる

テキスト、図形、線、フォントを Swift の値で扱います。文字や段落の書式、新規資料のテーマ、グリッド配置・整列・等間隔配置で、提案書や分析資料を組み立てます。

PPTXを読み書きする

既存ファイルを読み込み、テキストやスライドを編集して保存します。新しいプレゼンテーションの作成にも対応します。

未対応の内容を保持する

読み込んだファイルの未対応 XML や関連パーツを保持して保存します。変更に伴う警告を確認できます。安全に保存できない変更はエラーになり、厳密な保存では警告がある場合も拒否します。

フォント名や文字書式を扱いますが、フォントの埋め込みとスライドの描画エンジンは含みません。表示やレイアウトの再現、すべての PowerPoint 機能への対応を約束するものではありません。

短いコードでスライドを扱う

PowerPointを読み込む

import Foundation
import SwiftSlides

let url = URL(fileURLWithPath: "presentation.pptx")
let presentation = try Presentation(contentsOf: url)
print(presentation.slides.count)

スライドを作成して保存する

import Foundation
import SwiftSlides

var presentation = Presentation()
var slide = Slide()
slide.addText("Hello", frame: Rect(
    x: 40, y: 40, width: 640, height: 80
))
presentation.slides.append(slide)
try presentation.write(to: URL(
    fileURLWithPath: "hello.pptx"
))

ローカルファイルを扱う例です。ブラウザ内で Swift は実行しません。

Swift Package Managerで導入

公開リポジトリの main ブランチを指定します。リリース版はまだ用意していません。

Package.swift の dependencies とターゲットの dependencies に追加してください。

// Package.swift
dependencies: [
    .package(
        url: "https://github.com/nanbu/SwiftSlides.git",
        branch: "main"
    )
]

// Target dependencies
.product(name: "SwiftSlides", package: "SwiftSlides")

対応形式と開発の範囲

形式 状態 内容
PPTX 読み取り・保存 PowerPoint のプレゼンテーション形式。新規作成と既存ファイルの編集・保存に対応します。
PPTM 読み取り・保全保存 マクロを含む PowerPoint 形式。VBA は実行せず保持し、マクロを捨てる PPTX 保存は拒否します。
ODP 設計段階 LibreOffice Impress などが使うプレゼンテーション形式。読み取り・保存の実装は今後の対象です。
Keynote 設計段階 Apple Keynote のプレゼンテーション形式。読み取り・保存の実装は今後の対象です。

旧 PowerPoint の .ppt、暗号化ファイル、形式間の完全変換には対応していません。機能ごとの詳しい範囲は公開リポジトリで確認できます。

コードと仕様を公開しています