![]() |
Bienvenue invité ( Connexion | Inscription )
![]() |
![]()
Message
#1
|
|
Nouveau Membre Groupe : Membres Messages : 18 Inscrit : 20 Feb 2019 Membre no 207 269 ![]() |
Bonjour à tous,
Je suis nouveau ici et et en même temps nouveau sous MacOSX. Je développe une application (nativement sous GNU/Linux) et je l'ai portée sous Windows et tout dernièrement sous MacOSX (car je m'apperçois qu'il y a énormément d'utilisateurs sous ce système ... et que esthétiquement c'est très sympa !). Pour info je développe en Python (la version 3.x), et l'application utilise entre autre PyQt5, Pillow et Numpy. Je l'ai portée sous MacOSX à l'aide de Py2app (pour la petite histoire les versions pour GNU/Linux et Windows ont été compilées avec PyInstaller, mais celui-ci m'a posé tellement de problèmes avec ma version de Mavericks virtualisée avec VirtualBox sous GNU/Linux que j'ai du me rabattre à Py2app). L'application utilise en interne pdftoppm (une version portable de pdftoppm sous Windows, et une version installée sous GNU/Linux). pdftoppm fait partie de Poppler qui peut être installé avec homebrew, mais je ne veux pas imposer l'installation de Poppler utilisant mon application sous MacOSX avec le terminal (pas mal d'utilisateur potentiels semblent complètement alergiques aux install utilisant le terminal). En fait mon application, à un moment donné du processus, convertit un fichier pdf (de une à plusieurs pages) en images png. J'ai découvert sips dans MacOSX (qui peut convertir les pdf en images), ... mais je n'ai pas trouvé le moyen de convertir un pdf de plusieurs pages en autant d'images png. Voilà comment je convertis le png en image : Code sips -s dpiWidth 300 -s dpiHeight 300 -s format png fichier_pdf_source --out fichier_destination-1.png Si le fichier pdf contient 2 pages, j'aimerais obtenir : fichier_destination-1.png et fichier_destination-2.png (comme on peut l'obtenir avec pdftoppm), je ne sais pas du tout si c'est possible avec sips, j'ai fait des recherches à ce sujet mais pour l'instant je n'ai rien trouvé de probant ! C'est dommage car l'avantage de sips est qu'il est installé nativement sous MacOSX. N'ayant pas trouvé de version portable de pdftoppm (ou Poppler) sous MacOSX, ni un ImageMagick portable (en utilisant convert), je pense que la seule application qui me permette de convertir des pdf en png en ligne de commande sous MacOSX, c'est sips (je me trompe ?), mais il ne fait pas exactement ce que je veux ... Quelqu'un sait-il si malgré tout il est possible de dire à sips ... si le fichier pdf comporte plusieurs pages, et bien tu dois le convertir en autant d'images png ?, autrement quelqu'un sait-il ici s'il existe quelque part une version portable (out of the box) de pdftoppm (ou Poppler) pour MacOSX ?, ou ImageMagick ... que je pourrais importer dans mon logiciel comme je le fais sous Windows ? Pouvez-vous m'aider ? Je vous remercie d'avance. a+ ![]() Ce message a été modifié par ekdmekdm - 24 Feb 2019, 13:10. -------------------- |
|
|
![]() |
![]()
Message
#2
|
|
![]() Macbidouilleur de vermeil ! ![]() ![]() ![]() ![]() Groupe : Membres Messages : 989 Inscrit : 22 Aug 2002 Lieu : 06220 VALLAURIS Membre no 3 217 ![]() |
Oops, je n'ai pas posté la bonne version.
Pour générer des Png il faut utiliser : CODE use AppleScript version "2.3.1"
use scripting additions use framework "Foundation" use framework "Quartz" -- required for PDF stuff #===== Handlers -- Supposed to create a new PDF file and a new PNG for every page from the passed PDF file. # Based upon a handler designed by Shane STANLEY on splitPDF:thePath set inNSURL to current application's |NSURL|'s fileURLWithPath:thePath set thePDFDocument to current application's PDFDocument's alloc()'s initWithURL:inNSURL # CAUTION. theList contain indexes of pages numbered starting from 1, but ASObjC number them starting from 0 set theCount to thePDFDocument's pageCount() as integer # Build three descriptors only once set pathNSString to (current application's NSString's stringWithString:thePath) set tempPDFPath to POSIX path of ((path to temporary items as text) & "temp_pmet.pdf") set tempNSURL to (current application's |NSURL|'s fileURLWithPath:tempPDFPath) repeat with i from 1 to theCount set newPngNSString to current application's NSString's stringWithFormat_("%@%@.%@", pathNSString's stringByDeletingPathExtension(), ("-page " & text -2 thru -1 of ((100 + i) as text)), "png") set pngPath to newPngNSString as text set thePDFPage to (thePDFDocument's pageAtIndex:(i - 1)) set newPDFDoc to current application's PDFDocument's alloc()'s init() (newPDFDoc's insertPage:thePDFPage atIndex:0) (newPDFDoc's writeToURL:tempNSURL) set theImage to (current application's NSImage's alloc()'s initWithContentsOfURL:tempNSURL) set theData to theImage's TIFFRepresentation() -- make imagerep from data set newRep to (current application's NSBitmapImageRep's imageRepWithData:theData) set theData to (newRep's representationUsingType:(current application's NSPNGFileType) |properties|:{NSTIFFCompressionNone:1}) set theResult to (theData's writeToFile:pngPath atomically:true) end repeat end splitPDF: #===== Caller set thePath to POSIX path of (choose file with prompt "Choose a PDF file." of type {"PDF"}) its splitPDF:thePath Yvan KOENIG running High Sierra 10.13.6 in French (VALLAURIS, France) dimanche 24 février 2019 17:58:09 Ce message a été modifié par baron - 24 Feb 2019, 19:51.
Raison de l'édition : Ajout de balises Codebox, plus lisibles
|
|
|
![]() ![]() |
Nous sommes le : 17th June 2025 - 10:26 |