2014-04-24 5 views
0

Je souhaite utiliser l'API C pour Ghostscript sous Linux afin de convertir des fichiers PDF en d'autres choses: PDF avec moins de pages et d'images étant deux exemples. J'ai compris en fournissant des fonctions de rappel avec gsapi_set_stdio que je pouvais lire et écrire des données à partir de celles-ci. Cependant, d'après mon expérience et ma lecture, cela ne semble pas être le cas. Ma motivation pour ce faire est que je vais traiter les fichiers PDF à l'échelle, et que je ne veux pas que mon débit soit bloqué par un disque rotatif.Ghostscript: Convertir des fichiers PDF vers d'autres types de fichiers sans utiliser le système de fichiers

Ai-je raté quelque chose?

Répondre

0

L'API stdio vous permet de fournir vos propres remplacements pour stdin, stdout et stderr, cela n'affecte pas l'activité de l'interpréteur qui ne les utilise pas. Le périphérique pdfwrite fait un usage intensif du système de fichiers pour écrire des fichiers temporaires qui contiennent diverses parties intermédiaires du fichier PDF tel qu'il est interprété, elles sont ensuite réassemblées dans le nouveau fichier PDF. Les fichiers temporaires ne sont pas écrits dans stdout ou stderr.

Il n'y a aucun moyen d'éviter ce comportement.

Le rendu aux images utilise de nouveau le système de fichiers, sauf si vous spécifiez stdout comme destination de l'image bitmap, auquel cas vous pouvez utiliser l'appel API stdio pour rediriger stdout ailleurs. Si l'image est rendue à une résolution suffisamment élevée, GS utilisera une liste d'affichage et à nouveau la liste d'affichage sera stockée dans un fichier temporaire qui ne sera pas affecté par la redirection stdio.

+0

Merci pour l'information. Je note que poppler prend en charge [lire un document PDF de la mémoire] (https://developer.gnome.org/poppler/unstable/PopplerDocument.html#poppler-document-new-from-data) mais est seulement GPL. – user756079

+0

Vous pouvez utiliser le système de fichiers ram (ramfs) pour charger le PDF en mémoire avec Ghostscript, mais je doute fort que cela vous apporte beaucoup de performance, et que vous utiliseriez de la mémoire. – KenS

+0

En outre, Ghostscript est AGPL ou commercial, de quel type de licence avez-vous besoin? – KenS

Questions connexes