NSImages到PDF并将它们合并到Swift中

时间:2016-11-08 08:01:14

标签: xcode macos pdf swift3 nsimage

我有一个包含一些NSImages的数组。 我主要想将NSImage转换为PDF。所以,任何人都可以告诉我如何在Swift中做到这一点。

如果可能的话,你们能告诉我如何将PDF合并为一个并输出吗? 非常感谢。

2 个答案:

答案 0 :(得分:3)

以下是从图像创建PDF文档的一些粗略步骤,这应该可以帮助您入门。

使用PDFKit(导入Quartz)框架。

// Create an empty PDF document
let pdfDocument = PDFDocument()

// Load or create your NSImage
let image = NSImage(....)

// Create a PDF page instance from your image
let pdfPage = PDFPage(image: image!)

// Insert the PDF page into your document
pdfDocument.insert(pdfPage!, at: 0)

// Get the raw data of your PDF document
let data = pdfDocument.dataRepresentation()

// The url to save the data to
let url = URL(fileURLWithPath: "/Path/To/Your/PDF")

// Save the data to the url
try! data!.write(to: url)

您可能需要修改页面的边界和图像大小,以获得所需的精确PDF页面大小。

您可以使用其他PDFDocument / PDFPage API来插入,删除和重新排序网页。

答案 1 :(得分:3)

这对我快速(IOS 9或更高)很有效:

func createPDF(images: [UIImage]) {
        let pdfData = NSMutableData()
        UIGraphicsBeginPDFContextToData(pdfData, CGRect.zero, nil)
        for image in images {
            let imgView = UIImageView.init(image: image)
            UIGraphicsBeginPDFPageWithInfo(imgView.bounds, nil)
            let context = UIGraphicsGetCurrentContext()
            imgView.layer.render(in: context!)
        }
        UIGraphicsEndPDFContext()
        //try saving in doc dir to confirm:
        let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last
        let path = dir?.appendingPathComponent("file.pdf")

        do {
            try pdfData.write(to: path!, options: NSData.WritingOptions.atomic)
        } catch {
            print("error catched")
        }

        let documentViewer = UIDocumentInteractionController(url: path!)
        documentViewer.name = "Vitul"
        documentViewer.delegate = self
        documentViewer.presentPreview(animated: true)

    }

希望这会帮助某人:)