pdfkit-rs 0.2.0

Safe Rust bindings for Apple's PDFKit framework — documents, pages, selections, outlines, annotations, destinations, actions, and view state on macOS
Documentation
mod common;

use pdfkit::prelude::*;

#[test]
fn document_open_and_write_roundtrip() -> Result<()> {
    let document = common::fixture_document()?;
    assert_eq!(document.page_count(), 1);
    assert!(document.string().unwrap_or_default().contains("Hello PDFKit"));

    let output = common::output_path("document-roundtrip.pdf");
    document.write_to_url(&output)?;
    let reopened = PdfDocument::from_url(&output)?;
    assert_eq!(reopened.page_count(), 1);
    Ok(())
}

#[test]
fn empty_document_page_management() -> Result<()> {
    let (document, _page) = common::empty_document_with_page()?;
    let extra = PdfPage::new()?;
    document.insert_page(&extra, 1)?;
    assert_eq!(document.page_count(), 2);
    assert_eq!(document.page_index(&extra), Some(1));
    assert!(document.exchange_pages(0, 1).is_err());
    assert_eq!(document.page_count(), 2);
    document.remove_page(1)?;
    assert_eq!(document.page_count(), 1);
    Ok(())
}