Drucken mit Optionen automatisieren?

Ich versuche, eine Datei (ein PDF) ohne Intervention zu drucken. Nicht Automator-spezifisch, ich kann mit Applescript oder Terminal oder was auch immer umgehen. Die Einzelheiten dessen, was ich will, sind:

  • Auf einem bestimmten Drucker drucken
  • Auf bestimmte Seitengröße drucken (Nicht-Standard)
  • Automatisch gedreht (optional)
  • Anpassen skalieren, ganze Seite drucken (Ende 109 bis 112 %. 110 % funktioniert)

Ich kann dies manuell über das Druckmenü der Vorschau tun, nur die Seitengröße ist nicht standardmäßig, aber ich möchte es irgendwie automatisieren, per Drag & Drop.

Dinge, die ich versucht habe:

  1. Wenn ich aus dem Finder drucke, wird die Vorschau verwendet, aber die Größe ist zu hoch und die Seitengröße falsch.
  2. Wenn ich es auf den Drucker in ~/Library/Printers/printername ziehe, ist es wie mit LP, aber ohne die Optionen.
  3. Die Druckoptionen von Applescript sind schlecht dokumentiert.
  4. Automators "Print Finder Items" ist wie #1.
  5. Automators „Bilder drucken“ ist wie die Vorschau, aber „Scale to Fit“ funktioniert nicht wie die Vorschau, ich kann die Seitengröße nicht auswählen und „Auto-Rotate“ funktioniert überhaupt nicht.
  6. Wenn ich vom Terminal über LP oder LPR drucke, kann ich die Seitengröße und Ausrichtung/Anpassung an die Seite einstellen, aber ich kann sie nicht auf 110 % skalieren. Das kommt dem, was ich will, am nächsten.

Wie kann ich das machen? Es sollte nicht so schwer sein, ich möchte tun, was die GUI kann, nicht wie ich zusätzliche Funktionen möchte.

Im schlimmsten Fall, wie kann ich die Maus- oder Tastatursteuerung des Druckmenüs der Vorschau emulieren? Alles, was benötigt wird, ist 1. die Datei zu öffnen, 2. das Druckmenü aufzurufen, 3. zu einer Voreinstellung oder Seitengröße zu wechseln, da alle anderen Optionen einschließlich der Skalierung Standard sind . 4. Drucken/Eingabe drücken.

Um die Maus- oder Tastatursteuerung zu emulieren (und eine Menge anderer Funktionen, von denen Sie sich fragen werden, wie Sie jemals ohne gelebt haben), können Sie sich das Better Touch Tool ansehen .

Antworten (2)

Lassen Sie uns das Problem in zwei Teile aufteilen: Skalierung und Drucken.

Skalierung

Sie können eine PDF-Datei auf der Befehlszeile skalieren. Erwägen Sie, eine temporäre, skalierte PDF-Datei zum Drucken zu erstellen.

Siehe Skalieren von PDF-Inhalt und Seitenabmessungen von der Befehlszeile aus für empfohlene Ansätze dazu. Die am höchsten bewertete Antwort schlägt vor, cpdf mit einem Befehl wie dem folgenden zu verwenden:

cpdf -scale-page "1.1 1.1" in.pdf -o out.pdf

Ein alternatives Tool ist sips. Dieses Tool ist in OS X enthalten und ist überraschend leistungsfähig.

Drucken

Wie Sie festgestellt haben, ist das Drucksystem von OS X das Common Unix Printing System (CUPS). CUPS enthält das Befehlszeilentool , das alle erforderlichen Einstellungen und Optionenlpr akzeptieren kann .

Zum Drucken des PDFs über die Befehlszeile siehe:

Um die verfügbaren Drucker aufzulisten, verwenden Sie:

lpstat -p -d

Um eine PDF-Datei auf dem Standarddrucker zu drucken, verwenden Sie:

lpr file.pdf
Könnte es möglich sein, einen zu benutzen pipeund den ganzen Kram auf einmal zu machen? wie: cpdf -scale-page "1.1 1.1" in.pdf | lpr ?
Damit cpdfkönnte es möglich sein. Damit sipsmüsste es über eine Datei gehen. Ich vermute, ein kurzes Bash-Skript oder sogar ein AppleScript-Droplet würde den Befehl gut abschließen.
In Anbetracht der Tatsache, dass CPDF das Zuschneiden und Skalieren in einem einzigen Befehl ausführen und dann an LP weiterleiten kann, sollte dies das Beste für mich sein. Ich muss es mal testen.

Was ich letztendlich tat, war die Verwendung openund osascriptzusammen mit einem Tool pdfcropvon MacRumors Forum-Benutzer Oligarch (Wayback Machine backup to archive )

./pdfcrop /path/to/file.pdf -u in -p 6.68 1.82 -a tr -o 0.14 0.23 > ./0.pdf && \
./pdfcrop /path/to/file.pdf -b m -u in -p 3.30 1.82 -a tr -o 0.14 0.23 > ./1.pdf && \
./pdfcrop /path/to/file.pdf -b m -u in -p 3.38 1.78 -a tr -o 3.43 0.24 > ./2.pdf && \
open ./1.pdf ./2.pdf && \
osascript -e 'tell application "Finder" to delete POSIX file "'/path/to/file.pdf'"' -e 'tell application "Finder" to delete POSIX file "'./1.pdf'"' -e 'tell application "Finder" to delete POSIX file "'./2.pdf'"'
  1. Es nimmt die Originaldatei und erstellt drei Kopien. Eines mit dem auf Größe zugeschnittenen PDF (Crop-Box, nicht destruktiv), das ich behalte, und zwei auf Größe zugeschnittene (Media-Box), die temporär sind.
  2. Es öffnet sie dann mit Vorschau als zwei Seiten/Dateien im selben Fenster.
  3. Dann weist es den Finder über Applescript an, die temporären Dateien zu löschen , in einem Finder in den Papierkorb zu verschieben. Dasselbe wie wenn ich ⌘-Deletedie Dateien.
  4. Sobald ich in der Vorschau bin, kann ich ⌘-Pbeide Dateien drucken. Ich muss nur die Papiergröße ändern, die Vorschau übernimmt die Skalierung.

Natürlich macht es nicht alles, was ich will, aber es hilft, den Umfang des manuellen Zuschneidens und des Hin- und Hergehens zu reduzieren, um sicherzustellen, dass alles gedruckt wird, was ich brauche.

Da CPDF skalieren und zuschneiden kann, sollte es einfacher sein, alles über die Befehlszeile zu tun. Ich muss es einfach testen.