[swift] SwiftyJSON을 사용하여 JSON 데이터를 PDF로 내보내기

이번에는 SwiftyJSON 라이브러리를 활용해서 JSON 형식의 데이터를 가져와서 PDF 파일로 내보내는 방법을 알아보겠습니다.

SwiftyJSON이란?

SwiftyJSON은 JSON 데이터를 쉽게 다룰 수 있는 라이브러리로, Swift 언어로 작성되어 있습니다. JSON 형식의 데이터를 더 쉽게 파싱하고 다룰 수 있도록 도와줍니다.

1. SwiftyJSON 라이브러리 설치하기

우선 프로젝트에 SwiftyJSON 라이브러리를 설치해야 합니다. Cocoapods를 사용하면 편리하게 라이브러리를 추가할 수 있습니다. Podfile에 다음과 같은 코드를 추가한 후 터미널에서 pod install 명령을 실행합니다.

pod 'SwiftyJSON', '~> 5.0'

2. JSON 데이터 가져와서 PDF 파일로 저장하기

우리의 목표는 해당하는 JSON 데이터를 가져와서 PDF 파일로 내보내는 것입니다. 아래 예제 코드를 참고하여 진행해봅시다.

import SwiftyJSON
import PDFKit

func exportToPDF(jsonData: Data) {
    // JSON 데이터를 SwiftyJSON 객체로 변환
    let json = try! JSON(data: jsonData)
    
    // PDF 문서 생성
    let pdfDocument = PDFDocument()
    
    // JSON 데이터 파싱 및 PDF에 추가
    for (key, value) in json {
        let textAnnotation = PDFAnnotation(bounds: CGRect(x: 0, y: 0, width: 300, height: 20), forType: .freeText, withProperties: nil)
        textAnnotation.contents = "\(key): \(value)"
        pdfDocument.page(at: 0)?.addAnnotation(textAnnotation)
    }
    
    // PDF 파일 저장 경로
    let savePath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first! + "/output.pdf"
    
    // PDF 파일 저장
    pdfDocument.write(toFile: savePath)
    
    print("PDF 파일이 저장되었습니다. 경로: \(savePath)")
}

위 코드에서 언급된 jsonData는 JSON 데이터를 가져와서 Data 형태로 넘겨주면 됩니다. 이후에 SwiftyJSON을 사용하여 JSON 데이터를 파싱하고 PDFKit을 사용하여 PDF 문서를 생성합니다. JSON 데이터를 파싱하여 PDF에 추가한 후에는 PDF 파일을 저장합니다.

3. 사용 예시

위에서 작성한 exportToPDF 함수를 사용하여 JSON 데이터를 PDF로 내보내는 예시를 살펴봅시다.

let jsonString = """
{
  "name": "John Doe",
  "age": 30,
  "email": "johndoe@example.com"
}
"""

if let jsonData = jsonString.data(using: .utf8) {
    exportToPDF(jsonData: jsonData)
}

위 예시에서는 JSON 형식의 문자열을 가져와서 jsonData로 변환하고, 이를 exportToPDF 함수에 전달하여 PDF로 내보냅니다.

정상적으로 실행되면, PDF 파일이 저장된 경로가 콘솔에 출력됩니다.

결론

SwiftyJSON 라이브러리를 사용하여 JSON 데이터를 손쉽게 다룰 수 있습니다. 이를 PDF로 내보내기 위해 PDFKit을 활용하였습니다. JSON 데이터를 파싱하여 PDF에 추가하는 방법을 익히고, 필요한 경우 파일에 저장하여 활용할 수 있습니다.

참고 자료