Как установить метку PDFPage и перерисовать эскиз?
Я пытаюсь создать многостраничный файл PDF из NSImages в Swift на MacOS. Как установить метку 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
Ожидаемый результат: миниатюра страницы PDF с меткой "1" появляется в 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
свойство только для чтения
Это значение фактически является отображаемым номером страницы, поэтому обычно не требует настройки.