Geração de relatórios PDF em Swift: bibliotecas e frameworks para iOS/macOS

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 relatórios PDF em Swift (iOS/macOS)



A criação de documentos PDF nas plataformas Apple é uma das principais tarefas no desenvolvimento de aplicativos empresariais, relatórios financeiros ou sistemas de gerenciamento de documentos. Ao contrário da web stack, onde muitas bibliotecas de terceiros são usadas, no ecossistema Swift para trabalhar com PDF existem tanto frameworks nativos poderosos quanto soluções especializadas de terceiros. Neste artigo, analisaremos detalhadamente todas as principais ferramentas para geração de relatórios PDF em Swift para iOS e macOS.



Frameworks nativos da Apple



A Apple oferece duas maneiras principais de criar documentos PDF: UIGraphicsPDFRenderer (para UIKit) e PDFKit (para trabalhar com PDFs existentes). No macOS, também está disponível o NSGraphicsContext com suporte a PDF.



UIGraphicsPDFRenderer (iOS 10+)



Esta é a principal ferramenta para gerar PDF a partir de conteúdo UIKit. Ela permite desenhar texto, imagens, tabelas e gráficos arbitrários no contexto de uma página PDF.



import UIKit

func generateReport(data: String) -> Data { let pageSize = CGRect(x: 0, y: 0, width: 595.2, height: 841.8) // A4 let renderer = UIGraphicsPDFRenderer(bounds: pageSize) return renderer.pdfData { context in context.beginPage() // Título let title = "Relatório de Vendas" let attributes: [NSAttributedString.Key: Any] = [ .font: UIFont.boldSystemFont(ofSize: 24), .foregroundColor: UIColor.darkGray ] title.draw(at: CGPoint(x: 50, y: 50), withAttributes: attributes) // Conteúdo let textAttributes: [NSAttributedString.Key: Any] = [ .font: UIFont.systemFont(ofSize: 14) ] data.draw(at: CGPoint(x: 50, y: 100), withAttributes: textAttributes) // Linha separadora context.cgContext.setStrokeColor(UIColor.lightGray.cgColor) context.cgContext.setLineWidth(1) context.cgContext.move(to: CGPoint(x: 50, y: 90)) context.cgContext.addLine(to: CGPoint(x: 545, y: 90)) context.cgContext.strokePath() }}


PDFKit (iOS 11+, macOS 10.13+)



PDFKit é um framework de nível mais alto que permite não apenas criar, mas também editar PDFs existentes. Ele suporta anotações, formulários, marcadores e trabalho com documentos de várias páginas.



import PDFKit

func createPDFWithText() -> PDFDocument { let page = PDFPage() let pdfDocument = PDFDocument() // Criando uma página com texto let text = "PDFKit permite adicionar texto e anotações facilmente" let textAnnotation = PDFAnnotation( bounds: CGRect(x: 50, y: 700, width: 500, height: 100), forType: .freeText, withProperties: nil ) textAnnotation.contents = text textAnnotation.font = UIFont.systemFont(ofSize: 18) page.addAnnotation(textAnnotation) pdfDocument.insert(page, at: 0) return pdfDocument}


Bibliotecas de terceiros para Swift



Embora as ferramentas nativas cubram a maioria das tarefas, existem situações em que é necessária funcionalidade especializada: trabalho com modelos, exportação para PDF a partir do SwiftUI ou suporte para layout complexo.



SwiftUI e PDF (iOS 14+, macOS 11+)



A partir do iOS 14, é possível converter uma view SwiftUI em PDF usando ImageRenderer:



import SwiftUI

struct ReportView: View { var body: some View { VStack(alignment: .leading) { Text("Relatório Mensal") .font(.largeTitle) .foregroundColor(.blue) Text("Dados de agosto de 2024") .font(.headline) Divider() Text("Receita: R$ 1.234.567") .font(.body) } .padding() }}

func generatePDFFromSwiftUI() -> Data { let vie

Recommendations