2017-01-18 4 views
1

Я пытаюсь создать pdf-выход. Я уже закончил pdf-файл с pdfbox, но теперь он составляет около 15 МБ. Это важно для запланированной цели. Поэтому я хочу уменьшить размер файла. Я попробовал его первый с Linux терминала и Ghostscript:Ghost4j не создает выходной файл

гс -sDEVICE = pdfwrite -dCompatibilityLevel = 4 -dNOPAUSE -dBATCH -r150 -sOutputFile = output.pdf input.pdf

Это прекрасно работает , Но так как это программа Java и должна работать без оболочки, я тестировал ghost4j:

Ghostscript gs = Ghostscript.getInstance(); 
String[] gsArgs = new String[7]; 
gsArgs[0] = "-sDEVICE=pdfwrite "; 
gsArgs[1] = "-dCompatibilityLevel=1.4 "; 
gsArgs[2] = "-dPDFSETTINGS=/screen "; 
gsArgs[3] = "-dNOPAUSE "; 
gsArgs[4] = "-dBATCH "; 
gsArgs[5] = "-sOutputFile=qw3.pdf "; 
gsArgs[6] = "input.pdf"; 
gs.initialize(gsArgs); 
gs.exit(); 

Но я не подвожу выходной файл. Некоторые из этих аргументов незаконны?

Надеюсь, кто-то может помочь.

ответ

1

Благодаря @KenS я получил ответ:

Ghostscript gs = Ghostscript.getInstance(); 
String[] gsArgs = new String[8]; 
gsArgs[1] = "-sDEVICE=pdfwrite"; 
gsArgs[2] = "-dCompatibilityLevel=1.4"; 
gsArgs[3] = "-dNOPAUSE"; 
gsArgs[4] = "-dBATCH"; 
gsArgs[5] = "-r150"; 
gsArgs[6] = "-sOutputFile=qw3.pdf"; 
gsArgs[7] = "input.pdf"; 
gs.initialize(gsArgs); 
gs.exit(); 

Это кажется важным, что gsArgs [0] должен быть пустым.

Благодаря @KenS.

+0

Спасибо ... Я сделал то же самое, но gsArgs [0] решил мою проблему тоже .... –

0

Пара аргументов, по крайней мере, неверна. CompatibilityLevel должно быть числом от 1.0 до 1.7, 4 слишком велико. Установка разрешения - это не умная идея с pdfwrite, она, как правило, не будет иметь никакого эффекта. Существуют исключения, если вы используете прозрачный PDF-файл для версии PDF настолько низким, что, например, не поддерживают прозрачность.

Вы должны получить, по крайней мере, 0-байтовый файл PDF, если вы этого не сделаете, то что-то не так.

Если вы получили 0-байтовый файл, то по крайней мере операция началась. Вы должны захватить выход заднего канала и прочитать его для любых признаков ошибок.

+0

спасибо @KenS. Я немного изменил его. Но все же я не получаю выход. Даже файл с нулевым байтом. Есть ли у вас предложения, как уменьшить размер файла? –

+0

Если вы вообще не получаете никакого выходного файла, Ghostscript не запускался должным образом. Вы должны по-прежнему смотреть на вывод обратного канала, чтобы убедиться, что он сказал что-то полезное, и проверьте код возврата ошибки. Нет, я не знаю, как сделать это с Ghost4J, потому что я не разработчик JavaScript. Мое предположение заключается в том, что Ghosts4J не может найти Ghostscript DLL, что может быть связано с тем, что у вас установлена ​​неправильная битовая глубина Ghostscript (например, 64 против 32). Вам удалось заставить Ghost4J работать вообще? – KenS

+0

Если я удалю 'gsArgs [3] =" -dNOPAUSE ";' откроется окно с именем ghostscript и отобразит входной файл. –

Смежные вопросы