2013-11-22 5 views
0

Я пытаюсь соединить два PostScript файлов в один с ghost4j 0.5.0 следующим образом:ghost4j исключение класса литого во joing два приписок

final PSDocument[] psDocuments = new PSDocument[2]; 
psDocuments[0] = new PSDocument(); 
psDocuments[0].load("1.ps"); 
psDocuments[1] = new PSDocument(); 
psDocuments[1].load("2.ps"); 
psDocuments[0].append(psDocuments[1]); 
psDocuments[0].write("3.ps"); 

В течение этого упрощенного процесса я получил следующее сообщение об исключении для выше «добавить» линии :

org.ghost4j.document.DocumentException: java.lang.ClassCastException: 
org.apache.xmlgraphics.ps.dsc.events.UnparsedDSCComment cannot be cast to 
org.apache.xmlgraphics.ps.dsc.events.DSCCommentPage 

до сих пор я не сделал, чтобы узнать, Что здесь проблема - может быть, какая-то проблема в одном из файлов PostScript?

Значит, помощь будет оценена.

EDIT:

я тестировал с Ghostscript инструментом командной строки: (!)

gswin32.exe -dQUIET -dBATCH -dNOPAUSE -sDEVICE=pswrite -sOutputFile="test.ps" --filename "1.ps" "2.ps" 

что приводит документ, в котором 1.ps и 2.ps сливаются в одну страницу (то есть наложения). При удалении --filename результирующий документ будет PostScript с двумя страницами, как ожидалось.

+0

ghost4j не может разобрать 2.ps, возможно, в документе есть ошибка, я не могу сказать. – aalku

+0

Я думал, что разбор происходит во время вызова load(), а не во время добавления? – digipenKH

+0

КПП. У меня нет проблем с открытием обоих файлов PosScript в GhostView. – digipenKH

ответ

0

Я думаю, что что-то не так в документе или в библиотеке XMLGraphics, поскольку кажется, что он не может разобрать его часть.

Здесь вы можете увидеть код в ghost4j, что я думаю, что это не удается (link):

DSCParser parser = new DSCParser(bais); 
    Object tP = parser.nextDSCComment(DSCConstants.PAGES); 
    while (tP instanceof DSCAtend) 
     tP = parser.nextDSCComment(DSCConstants.PAGES); 
    DSCCommentPages pages = (DSCCommentPages) tP; 

И здесь вы можете увидеть, почему XMLGraphics может BRE sesponsable (link):

private DSCComment parseDSCComment(String name, String value) { 
    DSCComment parsed = DSCCommentFactory.createDSCCommentFor(name); 
    if (parsed != null) { 
     try { 
      parsed.parseValue(value); 
      return parsed; 
     } catch (Exception e) { 
      //ignore and fall back to unparsed DSC comment 
     } 
    } 
    UnparsedDSCComment unparsed = new UnparsedDSCComment(name); 
    unparsed.parseValue(value); 
    return unparsed; 
} 

Кажется parsed.parseValue(value) выкинул исключение, он был скрыт в catch, и он вернул unparsed версию ghost4j не ожидал.

0

Исключение происходит из-за того, что один из двух документов не соответствует Конвенции о структурировании документов Adobe (DSC), которая является обязательной, если вы хотите использовать метод Documentappend.

Вместо этого используйте SafeAppenderModifier. Здесь приведен пример: http://www.ghost4j.org/highlevelapisamples.html (Добавить документ PDF в документ PostScript)

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

  • Нет связанных вопросов^_^