À moins que vous n'ayez besoin de modifier l'image dans Aperçu, je vous suggère de ne pas l'utiliser du tout.
J'utilise le script Python suivant qui enregistre toute image présente dans le presse-papiers dans un fichier PDF, en utilisant une boîte de dialogue d'enregistrement. (Si le fichier existe, il ajoute l'image comme une nouvelle page). Vous pouvez l'intégrer dans un flux de travail Automator avec une action Run Shell script, ou l'ajouter au dossier /Library/script, et vous pouvez y accéder en utilisant le menulet script. (script Les préférences de Editor.app activent le menulet).
#!/usr/bin/python
from AppKit import NSPasteboard, NSPasteboardTypePDF, NSPasteboardTypeTIFF, NSPasteboardTypePNG, NSTIFFPboardType, NSPICTPboardType, NSImage, NSSavePanel, NSApp
from Foundation import NSURL
import Quartz as Quartz
import os, syslog
def save_dialog(directory, filename):
panel = NSSavePanel.savePanel()
print (panel)
panel.setTitle_("Save clipboard")
myUrl = NSURL.fileURLWithPath_isDirectory_(directory, True)
panel.setDirectoryURL_(myUrl)
panel.setNameFieldStringValue_(filename)
NSApp.activateIgnoringOtherApps_(True)
ret_value = panel.runModal()
if ret_value:
return panel.filename()
else:
return ''
def main():
destination = os.path.expanduser("~/Desktop/")
outfile = save_dialog(destination, "Clipboard.pdf")
myFavoriteTypes = [NSPasteboardTypePDF, NSPasteboardTypeTIFF, NSPasteboardTypePNG, NSTIFFPboardType, NSPICTPboardType, 'com.adobe.encapsulated-postscript']
pb = NSPasteboard.generalPasteboard()
best_type = pb.availableTypeFromArray_(myFavoriteTypes)
if best_type:
clipData = pb.dataForType_(best_type)
if clipData:
image = NSImage.alloc().initWithPasteboard_(pb)
if image:
page = Quartz.PDFPage.alloc().initWithImage_(image)
if os.path.exists(outfile):
pdfURL = NSURL.fileURLWithPath_(outfile)
myFile = Quartz.PDFDocument.alloc().initWithURL_(pdfURL)
if myFile:
pagenum = myFile.pageCount()
myFile.insertPage_atIndex_(page, pagenum)
print ("Image added to Clipboard file.")
else:
pageData = page.dataRepresentation()
myFile = Quartz.PDFDocument.alloc().initWithData_(pageData)
myFile.writeToFile_(outfile)
print ("Clipboard file created.")
else:
print ("No clipboard image data was retrieved.")
print ("These types were available:")
print (pb.types())
if __name__ == "__main__":
main()