Pracuję nad projektem dla OSX, w którym użytkownik może wybrać kolekcję dokumentów (z dowolnej aplikacji), z których muszę wygenerować pliki PDF. W standardowym oknie dialogowym Macintosh Print znajduje się przycisk PDF z wieloma poleceniami związanymi z PDF, w tym "Zapisz jako PDF ...". Muszę jednak wygenerować plik PDF bez interakcji użytkownika. Idealnie chcę, aby to działało z dowolnym typem dokumentu.Jak programowo wygenerować plik PDF z dowolnego dokumentu na OSX?
Oto opcje mam zbadane do tej pory:
- działania Automator. Istnieje biblioteka PDF dla Automatora, ale zapewnia ona czynności do pracy z plikami PDF, a nie generowania ich. Istnieje akcja Findera do drukowania dowolnego pliku, ale tylko do prawdziwej drukarki.
- AppleScript. Niektóre aplikacje mają możliwość generowania plików PDF (na przykład, jeśli wyślesz "Zapisz dokument w" test.pdf "" do Pages wygeneruje PDF (ale działa to tylko dla stron - potrzebuję wsparcia dla dowolnego typu dokumentu) .
- klienta drukarki. mógłbym stworzyć wirtualny sterownik drukarki, a następnie użyć działania Automator, ale nie podoba mi się pomysł mylące użytkownikowi dodatkową drukarkę na liście drukowania.
mam nadzieję, istnieje sposób interakcji z aktywną aplikacją, tak jakby użytkownik wykonywał następujące kroki:
- Do Cmd-P (otwiera okno dialogowe drukowania)
- Kliknij przycisk "PDF"
- wybierz "Zapisz jako PDF ..." (druga pozycja w menu)
- Type w pliku w oszczędzania dialogowym
- Kliknij "Save"
If to jest najlepsze podejście (prawda?), wtedy prawdziwym problemem jest: jak wysłać zdarzenia UI do zewnętrznej aplikacji (naciśnięcia klawiszy, zdarzenia myszy, wybory menu)?
Aktualizacja: Wystarczy, aby wyjaśnić jedną kwestię: dokumenty muszę konwertować do formatu PDF to dokumenty, które są tworzone przez innymi aplikacjami. Na przykład użytkownik może wybrać dokument Word lub arkusz kalkulacyjny Numbers lub rysunek OmniGraffle lub stronę internetową. Wspólnym mianownikiem jest to, że każdy z tych dokumentów ma powiązaną aplikację i ta aplikacja wie, jak ją wydrukować (a OSX wie, jak renderować wydruki do pliku PDF).
Próbki w Cocoa Dev Central nie pomagają, ponieważ generują plik PDF z mojej aplikacji.
Dzięki! To był właśnie wskaźnik, którego szukałem. –
-1 Wydaje się to dobrym podejściem, jeśli otwierasz plik na safari, ale jestem pewien, że nie chcesz poprawnego kodu dla każdej możliwej aplikacji – mcgrailm