[JNA] Ghostscript : crash et imcompréhension
Bonjour,
je cherche à utiliser Ghostscript pour éclater un pdf en images jpeg. J'ai un code C++ qui fonctionne bien, que je souhaite transcrire en Java via JNA. Voici le code de ma lib :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
public interface GhostscriptLibrary extends Library {
public GhostscriptLibrary INSTANCE = (GhostscriptLibrary) Native.loadLibrary("gsdll32",
GhostscriptLibrary.class);
// int gsapi_new_instance (void **pinstance, void *caller_handle);
public int gsapi_new_instance(PointerByReference instance,
Pointer caller_handler);
// void gsapi_delete_instance (void *instance);
public void gsapi_delete_instance(Pointer instance);
// int gsapi_init_with_args (void *instance, int argc, char **argv);
public int gsapi_init_with_args(Pointer instance, int argc, String[] argv);
// int gsapi_exit (void *instance);
public int gsapi_exit(Pointer instance);
} |
et celui de la classe l'appelant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
public class PdfExtractor {
public void extractPdf(String pdfPath) {
GhostscriptLibrary gs = GhostscriptLibrary.INSTANCE;
PointerByReference instancePointer = new PointerByReference();
gs.gsapi_new_instance(instancePointer, null);
String[] argv = { "pdf2ps", "-dNOPAUSE", "-dBATCH", "-dSAFER",
"-sDEVICE=jpeg", "-dJPEGQ=100", "-dCOLORSCREEN=true",
"-dNOINTERPOLATE", "-dGraphicsAlphaBits=2",
"C:\\tmp\\pdf\\test-gs-java-%d.jpg", "-r300x300", pdfPath };
gs.gsapi_init_with_args(instancePointer.getPointer(), argv.length, argv);
gs.gsapi_exit(instancePointer.getPointer());
gs.gsapi_delete_instance(instancePointer.getPointer());
}
} |
Lors de l'exécution, j'ai systématiquement un crash lors de l'appel à gsapi_init_with_args, mais je ne comprends pas trop pourquoi (visiblement un problème de pointeur ne sachant pas pointer :aie:). Si je supprime les appels à gsapi_init_with_args et gsapi_exit, tout se passe bien.
Bref, si quelqu'un pouvait m'aider...
Merci d'avance !