如何设置PDFPage标签并重画缩略图?

时间:2019-02-15 12:04:25

标签: swift apple-pdfkit

我试图在macOS上快速从NSImages创建多页PDF文件。如何设置PDFPage标签以及如何触发预览缩略图的生成。

PDFPage具有用于标签的变量: https://developer.apple.com/documentation/pdfkit/pdfpage/1504088-label

但是我没有找到一种设置标签的方法,我尝试使用page.setValue("1", forKey: "label")将标签设置为1,但这没做

我没有找到触发缩略图生成的方法。

一页的代码示例:

//stroyboard pdfView
@IBOutlet weak var myPdfView: PDFView!

//Storyboad PDFThumbnailView
@IBOutlet weak var myPDFThumbnailView:PDFThumbnailView!

//create a new PDFDocument
var myPDFDocument = PDFDocument()

//image path
guard let pngPath = Bundle.main.url(forResource: "example", withExtension: "png") else { return }

//create NSImage
if let firstPageImage = NSImage(contentsOf: pngPath){

    //PDFPage
    if let page = PDFPage(image: firstPageImage) {

        //insert Page in PDFDocument
        myPDFDocument.insert(page, at: myPDFDocument.pageCount)

    }
}

//set PDFDocument
myPdfView.document = myPDFDocument

//set PDFView
myPDFThumbnailView.pdfView = myPdfView

预期结果: PDFThumbnailView中将显示带有标签“ 1”的PDF页面的缩略图,而PDF页面将在PDFView中呈现。

实际结果: PDFThumbnailView中出现带有标签“ Label”的空白缩略图 并且PDF页面在PDFView中呈现。

编辑: 解决我的问题的解决方法是将PDFDocument保存到磁盘并重新加载。虽然不漂亮,但是可以正常工作……欢迎任何建议!

myPDFDocument.write(toFile: "path/to/temp/folder/mytemp.pdf")
if let document = PDFDocument(url: URL(fileURLWithPath: "path/to/temp/folder/mytemp.pdf")) 
{
    myPDFDocument = document
}

1 个答案:

答案 0 :(得分:0)

似乎没有一种设置PDFPage标签的方法。 label属性为只读。

此值实际上是显示的页码,因此通常不需要设置。