iOS PDFKit : 문서 생성, 페이지 삽입 / 삭제

이것은 코드 내 문서 생성 및 페이지 작업을 특징으로하는 Apple의 PDFkit에 대한 세 번째 기사입니다.

  • 첫 번째 기사는 PDFKit 기본 사항 및 잉크 주석에 관한 것입니다.
  • 두 번째 는 PencilKit, 텍스트 주석 및 자동 저장에 관한 것입니다.

iOS 장치에서 새 PDF 파일을 만들어야하는 경우 실제로 PDFKit을 전혀 사용할 필요가 없습니다. 이를위한 간단한 UIKit 메서드는 거의 없습니다.

먼저 UIGraphicsPDFRendererFormat작성자 등의 PDF 문서 메타 데이터를 제공 하기 위해 객체 를 생성해야합니다 .

let format = UIGraphicsPDFRendererFormat()
let metaData = [
    kCGPDFContextTitle: "Hello, World!",
    kCGPDFContextAuthor: "John Doe"
  ]
format.documentInfo = metaData as [String: Any]

둘째, PDF 페이지 크기를 계산해야합니다. PDF 문서는 72 DPI의 기본 해상도를 사용합니다. 페이지 크기는 다음과 같습니다.

// US Letter
Width: 8.5 inches * 72 DPI = 612 points
Height: 11 inches * 72 DPI = 792 points
// A4 would be [W x H] 595 x 842 points

let pageRect = CGRect(x: 0, y: 0, width: 595, height: 842)
let renderer = UIGraphicsPDFRenderer(bounds: pageRect,
                                     format: format)

let data = renderer.pdfData { (context) in
// Perform your drawing here
}

간단한 "Hello, world!"를 그리려면 텍스트는 다음 코드 예제를 사용합니다.

let data = renderer.pdfData { (context) in
context.beginPage()

  let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.alignment = .center

let attributes = [
NSAttributedString.Key.font: UIFont.boldSystemFont(ofSize: 14),
NSAttributedString.Key.paragraphStyle: paragraphStyle
]

let text = "Hello, World!"

let textRect = CGRect(x: 100, // left margin
y: 100, // top margin
width: 200,
height: 20)

  text.draw(in: textRect, withAttributes: attributes)
}
  • 새로운 PDF 페이지를 시작했습니다.
  • 텍스트 NSParagraphStyle.center정렬 을 추가하기 위해 새 개체를 만들었습니다 .
  • attributes글꼴 및 단락 스타일을 포함하는 사전을 만들었습니다 .
  • 생성 된 텍스트 문자열.
  • textRect텍스트가 그려 질 특정 사각형을 설명하는 구조체를 생성했습니다 .
  • .draw문자열 객체의 호출 된 메서드입니다.

마지막으로 PDF 컨텍스트를 장치의 파일에 저장해야합니다. 렌더링 된 Data객체를 반환 할 때 문서를 저장하는 방법에는 두 가지가 있습니다.

  • PDFKitPDFDocument(data:)객체를 초기화 하고 파일에 쓰기

let pdfDocument = PDFDocument(data: data)
let path = PATH_TO_DESIRED_FILE
pdfDocument.write(to: path)

let data = renderer.pdfData { (context) in

let url = URL_TO_DESIRED_FILE
try? rendered.writePDF(to: url) { (context) in
...
}

PDF 문서에 페이지를 추가하거나 제거하려면 Apple의 PDFKit방법 을 사용해야 합니다.

먼저 2 개의 PDF 문서를 초기화해야합니다. 하나는 페이지가 삽입 될 것이고 다른 하나는 삽입 할 페이지를 가져올 것입니다.

let firstPDFDocument = PDFDocument(url: URL_TO_YOUR_FIRST_DOC)
let secondPDFDocument = PDFDocument(url: URL_TO_YOUR_SECOND_DOC)

// let's assume we want to insert 5th page of 2nd doc to 1st doc
let page = secondDocument.page(at: 5)
// And insert this page as first
firstDocument.insert(page, at: 0)

firstDocument.write(to: URL_TO_YOUR_FIRST_DOC)

페이지를 제거하는 것도 쉽습니다.

let pdfDocument = PDFDocument(url: URL_TO_YOUR_DOC)
pdfDocument.removePage(at: 0) // removing the first page
firstDocument.write(to: URL_TO_YOUR_DOC)

Suggested posts

코드없이 SwiftUI 디자인 블록 배우기

최고의 SwiftUI 학습 경험을 구축하는 전 Apple 디자이너

코드없이 SwiftUI 디자인 블록 배우기

제 이름은 Sahand Nayebaziz입니다. 저는 Photoshop과 그래픽 디자인으로 시작한 인터페이스 디자이너입니다.

모든 초보자가 알아야 할 5 가지 Swift 기능

모든 초보자가 알아야 할 5 가지 Swift 기능

초보 개발자로 일한다고해서 우리가 가지고있는 기본 지식으로 계속 일하고 노인의 도움을 기다리는 것은 아닙니다. 우리의 기술을 향상시킬 여지는 항상 있습니다.