Rander PDF Аннотации в новом PDF
Я следил за этой статьей
подписать PDF с помощью PDFAnnotation
Вы можете скачать проект, используя в статье здесь
Моя проблема в том, что это PDFAnnotation, если я загружаю PDF на свой компьютер, а затем открываю его с помощью Preview или любого приложения PDFviewer, я могу перемещать PDFAnnotation по странице!
и потому что мое приложение клиент-клиент
поэтому Клиент 1 подписывает PDF, а затем отправляет его Клиенту 2, а также Клиент 2 подписывает PDF
вот почему мне нужно визуализировать новый PDF, это означает, что PDF-аннотации стали внутри PDF, а не PDF-аннотации
Также вы можете скачать этот PDF
вы заметите мою проблему и как две аннотации PDF могут быть перемещены
1 ответ
Я наконец-то нашел решение!
Я преобразовал его в Swift 4.2
Идея здесь не в том, чтобы использовать PDFAnnotation!.
Подпись является изображением, поэтому, когда пользователь сохраняет PDF
Я буду использовать изображение подписи для создания нового PDF и сохранить его в тот же файл PDF
чтобы поставить свою подпись там, где вы хотите, вам нужно изменить X и Yimage.draw(in: CGRect(x: 100, y: 100, width: 100, height: 100))
func drawOnPDF(path: String , signatureImage:UIImage) {
// Get existing Pdf reference
let pdf = CGPDFDocument(NSURL(fileURLWithPath: path))
// Get page count of pdf, so we can loop through pages and draw them accordingly
let pageCount = pdf?.numberOfPages
// Write to file
UIGraphicsBeginPDFContextToFile(path, CGRect.zero, nil)
// Write to data
//var data = NSMutableData()
//UIGraphicsBeginPDFContextToData(data, CGRectZero, nil)
for index in 1...pageCount! {
let page = pdf?.page(at: index)
let pageFrame = page?.getBoxRect(.mediaBox)
UIGraphicsBeginPDFPageWithInfo(pageFrame!, nil)
let ctx = UIGraphicsGetCurrentContext()
// Draw existing page
ctx!.saveGState()
ctx!.scaleBy(x: 1, y: -1)
ctx!.translateBy(x: 0, y: -pageFrame!.size.height)
//CGContextTranslateCTM(ctx, 0, -pageFrame.size.height);
ctx!.drawPDFPage(page!)
ctx!.restoreGState()
// Draw image on top of page
let image = signatureImage
image.draw(in: CGRect(x: 100, y: 100, width: 100, height: 100))
// Draw red box on top of page
//UIColor.redColor().set()
//UIRectFill(CGRectMake(20, 20, 100, 100));
}
UIGraphicsEndPDFContext()
}