我正在嘗試將多個影像繪制成一個PDFPage.
查看檔案和 StackOverflow 似乎我得到的最好的方法是使用PDFPage如下UIImage初始化程式:
let pdfPage = PDFPage(image: image)
但它只是創建一個帶有整頁影像的頁面。我嘗試使用繪制影像,CGContext但我不明白如何PDFPage在繪圖背景關系中使用它來快速繪制影像,如下例所示。
let bounds = page.bounds(for: .cropBox)
// Create a `UIGraphicsImageRenderer` to use for drawing an image.
let renderer = UIGraphicsImageRenderer(bounds: bounds, format: UIGraphicsImageRendererFormat.default())
let image = renderer.image { (context) in
// How do I rapidly draw them here?
}
任何幫助將不勝感激!
我得到的結果PDFPage(image: <UIImage>)與預期結果:

uj5u.com熱心網友回復:
您可能需要改進回圈中影像的定位邏輯,但這應該為您指明正確的方向。
import UIKit
import PDFKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let pdfView = PDFView()
pdfView.frame = CGRect(x: 0, y: 50, width: view.frame.width, height: view.frame.height - 50)
if let d = createPDFDocument() {
pdfView.document = d
}
view.addSubview(pdfView)
}
func createPDFDocument() -> PDFDocument? {
let pdfDocument = PDFDocument()
let page = PDFPage()
let bounds = page.bounds(for: .cropBox)
let imageRenderer = UIGraphicsImageRenderer(bounds: bounds, format: UIGraphicsImageRendererFormat.default())
let image = imageRenderer.image { (context) in
context.cgContext.saveGState()
context.cgContext.translateBy(x: 0, y: bounds.height)
context.cgContext.concatenate(CGAffineTransform.init(scaleX: 1, y: -1))
page.draw(with: .mediaBox, to: context.cgContext)
context.cgContext.restoreGState()
// Improve logic for image position
Range(1...4).forEach { value in
let image = UIImage(named: "YOUR_IMAGE_NAME")
let rect = CGRect(x: 50 * value, y: 0, width: 40, height: 100)
image?.draw(in: rect)
}
}
let newPage = PDFPage(image: image)!
pdfDocument.insert(newPage, at: 0)
return pdfDocument
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/529227.html
標籤:迅速pdfcg上下文ios-pdfkit苹果-pdfkit
