[swift] PhoneNumberKit을 사용하여 전화번호를 PDF로 내보내기

이번 블로그에서는 PhoneNumberKit 라이브러리를 사용하여 전화번호를 입력하고 PDF 파일로 내보내는 방법을 알아보겠습니다.

전화번호를 입력하기 위해서는 먼저 PhoneNumberKit 라이브러리를 프로젝트에 추가해야 합니다. CocoaPods를 사용하는 경우 Podfile에 다음과 같이 추가합니다.

pod 'PhoneNumberKit'

설치한 다음, 앱의 코드에서 PhoneNumberKit을 임포트합니다.

import PhoneNumberKit

다음은 PhoneNumberKit을 사용하여 전화번호를 입력하는 예제 코드입니다.

let phoneNumberKit = PhoneNumberKit()
let phoneNumber: PhoneNumber = try! phoneNumberKit.parse("+1234567890")

위의 코드에서는 “+1234567890”을 입력받아 PhoneNumber 객체로 변환합니다. PhoneNumberKit.parse() 메소드는 발생 가능한 예외를 처리하므로 try-catch 블록 안에서 호출해야 합니다.

PhoneNumber 객체에서 전화번호를 추출하려면 다음과 같이 사용할 수 있습니다.

let nationalNumber = phoneNumber.nationalNumberString
let formattedNumber = phoneNumberKit.format(phoneNumber, toType: .e164)

nationalNumberString 속성은 전화번호의 국가번호 이외의 부분을 반환하며, format() 메소드는 PhoneNumber 객체를 원하는 형식으로 변환합니다.

이제 전화번호를 PDF로 내보내는 예제 코드를 작성해보겠습니다. 먼저 PDF 문서를 생성하고 전화번호를 추가할 페이지를 만듭니다.

let pdf = PDFDocument()
let page = PDFPage()
pdf.insert(page, at: 0)
let pageBounds: CGRect = page.bounds(for: .mediaBox)

다음으로 전화번호를 텍스트로 추가하고 페이지에 추가합니다.

let phoneNumberText = "\(nationalNumber), \(formattedNumber)"
let phoneNumberTextFont = UIFont.systemFont(ofSize: 20)
let phoneNumberTextSize = phoneNumberText.size(withAttributes: [NSAttributedString.Key.font: phoneNumberTextFont])
let phoneNumberTextRect = CGRect(x: pageBounds.midX - phoneNumberTextSize.width/2, y: pageBounds.midY - phoneNumberTextSize.height/2, width: phoneNumberTextSize.width, height: phoneNumberTextSize.height)

let phoneNumberTextAttributes: [NSAttributedString.Key: Any] = [NSAttributedString.Key.font: phoneNumberTextFont]
phoneNumberText.draw(in: phoneNumberTextRect, withAttributes: phoneNumberTextAttributes)

let phoneNumberPDFData = NSMutableData()
UIGraphicsBeginPDFContextToData(phoneNumberPDFData, pageBounds, nil)
UIGraphicsBeginPDFPage()
phoneNumberText.draw(in: phoneNumberTextRect, withAttributes: phoneNumberTextAttributes)
UIGraphicsEndPDFContext()

마지막으로 PDF 파일로 저장합니다.

let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
let pdfUrl = documentsDirectory.appendingPathComponent("PhoneNumber.pdf")
phoneNumberPDFData.write(to: pdfUrl, atomically: true)

위의 코드에서는 번호를 포함한 텍스트를 생성하고, 해당 텍스트를 PDF 문서에 추가하는 방법을 보여줍니다. 마지막으로, 생성한 PDF를 파일로 저장하여 내보냅니다.

이제 PhoneNumberKit을 사용하여 전화번호를 PDF로 내보내는 방법을 알게 되었습니다. 번호를 파싱하고 PDF 문서에 추가하는 단계를 따라하면 쉽게 구현할 수 있습니다.

더 자세한 내용은 아래의 링크를 참조하시기 바랍니다.