Geração de PDF em Swift (iOS/macOS): visão geral das ferramentas e exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Geração de PDF em Swift (iOS/macOS): guia completo



Criar documentos PDF é uma das tarefas essenciais no desenvolvimento de aplicativos para iOS e macOS. Relatórios, faturas, certificados, livros eletrônicos — tudo isso requer uma ferramenta confiável e flexível para gerar PDF. No ecossistema Swift, existem várias abordagens: desde frameworks nativos da Apple até bibliotecas de terceiros com recursos avançados. Neste artigo, vamos explorar as principais formas de gerar PDF, suas vantagens e desvantagens, além de fornecer exemplos práticos de código.



1. PDFKit — framework nativo da Apple



PDFKit é um poderoso framework da Apple, disponível no iOS 11+ e macOS 10.13+. Ele oferece uma API de alto nível para criar, exibir e editar documentos PDF. Principais recursos:

  • Criação de PDF a partir de UIView, UIImage ou texto
  • Adição de anotações, formulários e hiperlinks
  • Trabalho com documentos de várias páginas
  • Suporte a Core Graphics para renderização personalizada


Exemplo de criação de PDF a partir de UIView:

import PDFKit

func generatePDF(from view: UIView) -> Data? { let pdfData = NSMutableData() UIGraphicsBeginPDFContextToData(pdfData, view.bounds, nil) UIGraphicsBeginPDFPage() guard let context = UIGraphicsGetCurrentContext() else { return nil } view.layer.render(in: context) UIGraphicsEndPDFContext() return pdfData as Data}


Este método é adequado se você precisar "fotografar" rapidamente uma interface existente. No entanto, para layouts complexos (tabelas, cabeçalhos e rodapés, fontes personalizadas), é melhor usar Core Graphics diretamente.



2. Core Graphics (Quartz 2D) — solução de baixo nível



Core Graphics oferece controle total sobre o processo de renderização. Você trabalha com o contexto PDF, desenha linhas, texto, imagens e gerencia páginas. Esta é a abordagem mais flexível, mas também a mais trabalhosa.



Exemplo de criação de um PDF simples com texto:

import UIKit

func createPDFWithText() -> Data? { let pageSize = CGRect(x: 0, y: 0, width: 612, height: 792) // A4 let data = NSMutableData() UIGraphicsBeginPDFContextToData(data, pageSize, nil) UIGraphicsBeginPDFPage() guard let context = UIGraphicsGetCurrentContext() else { return nil } let text = "Olá, mundo PDF!" let attributes: [NSAttributedString.Key: Any] = [ .font: UIFont.systemFont(ofSize: 24), .foregroundColor: UIColor.black ] text.draw(at: CGPoint(x: 50, y: 50), withAttributes: attributes) UIGraphicsEndPDFContext() return data as Data}


Para documentos complexos (tabelas, imagens, numeração de páginas), será necessário escrever muito código auxiliar. Por outro lado, você obtém o máximo de desempenho e o menor tamanho de arquivo.



3. TPPDF — biblioteca de terceiros de código aberto



TPPDF (GitHub: techprimate/TPPDF) é uma biblioteca Swift para geração de PDF com sintaxe declarativa. Ela suporta:

  • Texto, imagens, tabelas, listas
  • Cabeçalhos e rodapés, numeração de páginas
  • Quebra automática de conteúdo entre páginas
  • Fontes personalizadas, cores, bordas


Instalação via Swift Package Manager:

// Package.swiftdependencies: [    .package(url: "https://github.com/techprimate/TPPDF.git", from: "2.0.0")]


Exemplo de criação de documento com tabela:

import TPPDF

func generateInvoice() -> Data? { let document = PDFDocument(format: .a4) // Adiciona título document.add(text: "Fatura nº123", style: PDFTextStyle.heading1) // Cria tabela let table = PDFTable(rows: 3, columns: 2) table[0][0].content = "Produto" table[0][1].content = "Preço" table[1][

Recommendations