Как установить метку PDFPage и перерисовать эскиз? - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь создать многостраничный 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 Ответ

0 голосов
/ 17 февраля 2019

Похоже, что нет способа установить метку для PDFPage.Свойство label доступно только для чтения.

Это значение фактически является отображаемым номером страницы, поэтому обычно не требует настройки.

...