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

Posted

技术标签:

【中文标题】如何设置 PDFPage 标签并重绘缩略图?【英文标题】:How to set the PDFPage Label and redraw the thumbnail? 【发布时间】:2019-07-09 13:50:06 【问题描述】:

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

PDFPage 有一个标签变量: https://developer.apple.com/documentation/pdfkit/pdfpage/1504088-label

但我没有找到设置标签的方法,我尝试将标签设置为 1:page.setValue("1", forKey: "label"),但这没有任何作用

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

一页的代码示例:

//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

预期结果: 带有标签“1”的 PDF 页面的缩略图出现在 PDFThumbnailView 中,并且 PDF 页面在 PDFView 中呈现。

实际结果: PDFThumbnailView 中出现带有“标签”标签的空白缩略图 并且 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】:

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

这个值实际上是显示的页码,一般不需要设置。

【讨论】:

文档 (developer.apple.com/documentation/pdfkit/pdfpage/1504088-label) 说:通常,第一页的标签是“1”,第二页的标签是“2”,依此类推,但非数字标签也是可能(例如“xxi”、“4-1”等)。所以我假设有一种方法可以设置此标签,例如将其设置为“xxi”。 @JulianHi 是的,正在读取的 PDF 在标签中包含其他类型的值是“可能的”,但 PDFKit 中没有设置此类值的机制。 (据我从 Apple 的 API 文档中可以看出。)

以上是关于如何设置 PDFPage 标签并重绘缩略图?的主要内容,如果未能解决你的问题,请参考以下文章

如何设置 Twitter 引导缩略图的高度?

Wordpress如何获取图形标签内的帖子缩略图

html如何设置鼠标悬停在缩略图时,上面的大图切换为该缩略图的大图?

使用视频标签html5时如何在移动设备上显示视频缩略图

CoreLDRAW X4怎么设置才能显示缩略图?

在 iOS Safari 中播放音频时如何设置缩略图?