新 PDF 中的 Rander PDFAnnotation
Rander PDFAnnotation within new PDF
我关注了这个article
使用 PDFAnnotation 对 PDF 签名
您可以下载文章中使用的项目here
我的问题是因为它是 PDFAnnotation 如果我在我的计算机上下载 pdf 然后使用预览或任何 PDFviewer 应用程序打开它
我可以在页面上移动 PDFAnnotation!
并且因为我的应用是客户端对客户端
所以客户1在PDF上签名然后发送给客户2
以及客户 2 签署 PDF
这就是为什么我需要呈现新的 pdf,这意味着 PDFAnnotation 变成了 PDF,而不是 PDFAnnotation
另外,你可以下载这个PDF
您会注意到我的问题以及如何移动两个 PDFAnnotations
我终于找到解决办法了!
我确实把它转换成了 Swift 4.2
这里的思路是不使用PDFAnnotation!
签名是一张图片
所以当用户保存 PDF
我会用签名图
创建新的 PDF
并将其保存到同一个 PDF 文件
把你的签名放在你想要的地方
您需要修改 X 和 Y
image.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()
}
我关注了这个article
使用 PDFAnnotation 对 PDF 签名
您可以下载文章中使用的项目here
我的问题是因为它是 PDFAnnotation 如果我在我的计算机上下载 pdf 然后使用预览或任何 PDFviewer 应用程序打开它 我可以在页面上移动 PDFAnnotation!
并且因为我的应用是客户端对客户端
所以客户1在PDF上签名然后发送给客户2 以及客户 2 签署 PDF
这就是为什么我需要呈现新的 pdf,这意味着 PDFAnnotation 变成了 PDF,而不是 PDFAnnotation
另外,你可以下载这个PDF
您会注意到我的问题以及如何移动两个 PDFAnnotations
我终于找到解决办法了!
我确实把它转换成了 Swift 4.2
这里的思路是不使用PDFAnnotation!
签名是一张图片 所以当用户保存 PDF
我会用签名图 创建新的 PDF 并将其保存到同一个 PDF 文件
把你的签名放在你想要的地方
您需要修改 X 和 Y
image.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()
}