기존 프로젝트에 약관을 확인하려는 용도로 WebKit을 사용하여 html파일을 로드하는 방식으로 사용을 하고 있었습니다.
Server 에서 pdf로 보내도 WebKit에서 변환하여 잘 보여주고 있는데요.
PDFKit을 사용하여 다양한 방식으로 표시를 해보겠습니다.
새로운 xcode 프로젝트를 PDFKitExample이라는 이름으로 만들어줍니다.
그리고 Main.storyboard의 ViewController에 UIView를 만들어주는데 class를 'PDFView'로 연결해줍니다.
PDFView는 PDFKit에서 지원하는 UIView를 상속하여 만들어진 View이고 PDF파일을 보여주는 역할을 합니다.
ViewController로 돌아와 PDFKit을 import하고 조금전에 만든 PDFView 를 pdfView 와 연결합니다.
import UIKit
import PDFKit
class ViewController: UIViewController {
@IBOutlet weak var pdfView: PDFView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
}
이제 pdfView에 pdf파일을 연결하는 함수를 작성해 줍니다.
PDFDocument라는 Parameter를 받아서 pdfView와 연결해줍니다.
autoScales 는 뷰의 크기가 조정되거나 회전 될 때 배율이 자동으로 변경되는 모드입니다.
true, false 로 구성되어있습니다.
displayMode는 문서 표시 모드 이며 기본값은 singlePageContinuous로 단일 페이지 방식입니다.
singlePage, singlePageContinuous, twoUp, twoUpContinuous 모드가 있습니다.
displayDirection은 vertical과 horizontal로 구성되어있고 기본값은 vertical 모드 입니다.
url을 받아서 PDFDocument로 변환하여 loadPdfView함수를 호출하도록 처리 했습니다.
local방식과 web방식을 선택하여 사용하면 되고, 아래 코드를 ViewDidLoad 함수에 넣어서 실행해보겠습니다.
// local Sample Pdf
// let url = Bundle.main.url(forResource: "sample", withExtension: "pdf")
// web Sample Pdf
let url = "http://www.africau.edu/images/default/sample.pdf"
if let url = URL(string: urlString),
let document = PDFDocument(url: url) {
loadPdfView(document: document)
}
ld: '/Users/gigas/Documents/...)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture arm64
BITCODE는 ios9에서부터 앱 용량을 줄여주는 App Thining과 밀접한 관계가 있습니다.
App Store에 등록할 때 bitcode 활성화 상태로 올라가서 Apple이 32bit, 64bit 를 구분하여 용량을 줄이도록 제공한다고 합니다.
보안 솔루션 업체에서 오래전에 만들어둔 수정 보완을 거치지 않고 납품을 많이 하는지 BITCODE 관련해서 처리가 되어있지 않았습니다.
이를 해결하려면 보안 솔루션 업체에서 BITCODE를 포함하여 빌드를 해주는 방법이 있습니다.
하지만 이렇게 간단하게 된다면 저런 모듈을 주지 않았겠죠..
업체와 문제 해결방법을 찾기보단 프로젝트 설정을 건드는것으로 처리하려고 합니다.
Build Settings 에서 Build Options 의 Enable Bitcode 값이 기본은 Yes지만 No로 변경하면 정상적으로 Build가 됩니다.
작성을 완료한 뒤 'Continue' 버튼을 클릭하였지만 던스 번호가 등록되어있지 않아 Dun & Bradstreet에서 법인에 정보를 제출하여 던스 번호를 요청하라고 합니다.
약관에 동의 후 'Submit' 버튼을 클릭하면Dun & Bradstreet로부터던스 번호 요청이 완료됩니다.
4. 던스 번호 요청 확인 이메일 수신
요청한 후 당일에 작성한 회사 이메일로 승인 메일이 수신됩니다.
Thank you for submitting your D-U-N-S Number request / update to D&B.
It should be completed by 07/13/2020, or sooner.
Your request id is: 000000-000000.
A D&B representative may be contacting you directly.
Your cooperation will help to expedite the resolution of this request.
Please contact applecs@dnb.com if you have any questions.
5. 070 국제전화 통화 수신
메일을 수신하고 나면070으로 시작하는 국제전화가 1~2일 내로 오는데 영어 또는 한국어로 연결됩니다.
이메일로 받은 Request id를 확인합니다.
(이 부분에서 인식이 안되어 전화가 종료될 수 있습니다. 해결 방법을 별도로 작성해 공유하겠습니다.)
6. 던스 번호 발급 완료 메일 수신
던스 번호 9자리를 포함한 메일을 수신합니다.
7일 후에 던스 번호를 사용할 수 있다는 것과 던스 번호로 메일로 도착하였습니다.
Your D-U-N-S Number request/update submitted on 2020-06-29 with ID Number 000000-000000 has been completed.
You may start using your number in 7 days.
D-U-N-S Number: 000000000 Resolution Description: Match Found via host investigation,
host database updated The following information was submitted as part of your request:
Business Name: 회사명 City: 시, 구
Country: KOREA SOUTH (REP OF) Thank you for using D&B's Mini Investigation Service.
7. 던스 번호 확인
발급 받은 던스 번호를 확인하시려면 아래의 URL로 이동후 양식을 작성하시면 확인 가능합니다.