【Swift/PDFKit】画像(UIImage)をPDFファイルに変換やページの追加など操作する方法!

この記事からわかること

  • Swift画像(UIImage)PDF変換する方法
  • PDFKitとは?
  • PDFDocument使い方
  • ページテキスト追加するには?
  • 端末保存する方法

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

環境

Swiftで画像をPDFに変換する方法

Swiftで画像(UIImage)をPDFファイルに変換する方法は2つあります。

1.UIGraphicsBeginPDFContextToData

UIGraphicsBeginPDFContextToDataは、Core Graphicsを使用してPDFコンテキストを作成し、データバッファにPDFデータを書き込むためのグローバル関数です。直接データバッファに書き込むため、一度に大量のデータを処理する場合に効率的ですが、使用方法は少し難しくなっています。

PDFKitとは?

PDFKitiOSおよびmacOSアプリケーションでPDFファイルを作成、表示、および操作するための公式のフレームワークです。UIGraphicsBeginPDFContextToDataよりも簡素なAPIでPDFを操作することができるようになっており、PDF文書の表示、検索、注釈の追加、ページの結合など、豊富な機能を提供しています。

PDFKitの使い方

PDFKitを使用するためには以下のimport文を記述します。公式のフレームワークなので特に導入手順は必要なくすぐに使うことが可能です。

import PDFKit

PDFドキュメント(ファイル)の作成

PDFKitではPDFDocumentクラスを使用して空のPDFドキュメント(PDFファイル)を生成します。

let pdfDocument = PDFDocument()

ページの追加

作成したPDFドキュメントに空のページを追加したい場合PDFPageをインスタンス化してinsertメソッドを実行します。引数には対象のページと追加するページ番号を渡します。

// 空のページを作成してPDFDocumentに追加
if let page = PDFPage() {
    pdfDocument.insert(page, at: pdfDocument.pageCount)
}

UIImageをPDFページとして追加する

PDFドキュメントに画像(UIImage)をそのままページとして追加したい場合PDFPage(image:)を使用してインスタンス化してinsertするだけです。

// UIImageをページとして作成してPDFDocumentに追加
if let pdfPage = PDFPage(image: image) {
    pdfDocument.insert(pdfPage, at: pdfDocument.pageCount)
}

テキストを追加する

PDFページにテキストを追加したい場合CATextLayerを使用して追加したいテキストの位置やサイズ、文言を定義します。続いてPdfDocument.page(at:)メソッドを使用して追加したいページを取得し、addAnnotationメソッドを使用してテキストを描画しています。

let text = "Hello, World!"
let textLayer = CATextLayer()
textLayer.string = text
textLayer.frame = CGRect(x: 100, y: 100, width: 200, height: 50) // テキストの位置とサイズを指定
if let currentPage = pdfDocument.page(at: 0) {
    currentPage.addAnnotation(textLayer)
}

保存する

作成したPDFドキュメントを保存したい場合はwrite(to:)メソッドを使用します。

guard let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else {
    return
}
let pdfURL = documentsDirectory.appendingPathComponent("generated.pdf")
pdfDocument.write(to: pdfURL)

既存のPDFファイルを読み込む

既存のPDFファイルに対してページの追加などを行いたい場合はPDFDocument(url:)を使用してPDFドキュメントを取得すればOKです。

let pdfDocument = PDFDocument(url: pdfURL)

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index