2012-04-23 2 views
4

У меня есть PDF-файлы со ссылочными шрифтами, и я хотел бы использовать Ghost4J для вывода PDF-файлов, содержащих встроенные шрифты.Ghost4J/Ghostscript - Получение ошибки 100 при попытке встроить шрифты в PDF

public void execute() { 
    Ghostscript gs = Ghostscript.getInstance(); 
    String[] cmdStr={ 
     "-dNOPAUSE","-dBATCH","-dCompatibilityLevel=1.4", 
     "-dPDFSETTINGS=/prepress","-dSAFER","-dNOPLATFONTS", 
     "-sDEVICE=display","-sPAPERSIZE=letter", 
     "-I","C:\\WINNT\\Fonts\\;C:\\Program Files\\gs\\gs9.05\\lib\\;C:\\Program Files\\gs\\gs9.05\\bin\\;", 
     "-dSubsetFonts=true","-dEmbedAllFonts=true", 
     "-sFONTPATH=C:\\WINNT\\Fonts", "-sOutputFile=", 
     outputPath,"-c",".setpdfwrite", "-f",inputPath 
    };  
    try { 

     gs.initialize(cmdStr); 
     gs.exit(); 

    } catch (GhostscriptException e) {   
     System.out.println("ERROR: " + e.getMessage()); 
     e.printStackTrace(); 
    } 

При запуске любого PDF я получаю следующее сообщение об ошибке:

ERROR: Cannot initialize Ghostscript interpreter. Error code is -100 

При запуске в командной строке аргументы работают правильно.

gswin32c.exe -dNOPAUSE -dBATCH -dCompatibilityLevel=1.4 -dPDFSETTINGS=/prepress -dSafer -NOPLATFONTS -sDEVICE=pdfwrite -sPAPERSIZE=letter -dSubsetFonts=true -dEmbedAllFonts=true -sFONTPATH=C:\\WINNT\\Fonts -sOutputFile=c:\out.pdf -f c:\test.pdf 

прослеживаний:

  • GhostScript имеет разрешение на запись на диск C :.
  • Я удалил все переключатели, кроме OutputPath, "-f", inputPath и я все еще получаю ошибку
  • Удалены запятая в конце cmdStr после inputPath

Примечания:

  • Я работаю на получение обратных вызовов
+0

Я ничего Ghost4J не знаю, но .... эти параметры '' -ps2pdf' и -psconv' не выглядят знакомо мне для командной строки Ghostscript. Кроме того, я не вижу никакого вызова 'gswin32c.exe', который будет работать в Windows (только' gs', который будет работать в Unix) в примере вашего кода cmdStr ... –

+0

Ghost4J - это просто оболочка Java для C++ Ghostscript код. http://ghost4j.sourceforge.net/ – eabraham

+0

Я догадался так много ... Но вы уверены, что ваш способ вызвать Ghostscript из вашего Java-кода правильный? –

ответ

1

у вас есть запятая после переменной inputPath. Это недопустимый синтаксис Java.

Я использую ghostscript в производственном приложении Java для создания файлов PCL из PDF-файлов. Я использовал класс java.lang.Runtime для выполнения исполняемого файла Ghostscript, поэтому я не могу дать совет напрямую для Ghost4J.

Я подозреваю, что проблема в том, что api не знает расположения поддерживающих файлов. Попробуйте передать полный путь к шрифтам, папкам lib и bin, как показано ниже.

"-Ic:\Program Files (x86)\gs\fonts\;c:\Program Files (x86)\gs\lib\;c:\Program Files (x86)\gs\bin\;" 
+0

Вы правы в запятой, но я все еще получаю сообщение об ошибке. – eabraham