2

PostScript次のように、2 つのファイルを 1 つに結合しようとしghost4j 0.5.0ています。

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 ファイルの 1 つに何らかの問題があるのでしょうか?

ですから、助けていただければ幸いです。

編集:

私は GhostScript コマンドライン ツールでテストしました:

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

これにより、1.ps と 2.ps が 1 つの (!) ページ (つまりオーバーレイ) にマージされたドキュメントが作成されます。--filename を削除すると、結果のドキュメントは予想どおり 2 ページの PostScript になります。

4

2 に答える 2

1

ドキュメントの一部を解析できないように見えるため、ドキュメントまたは XMLGraphics ライブラリに問題があると思います。

ここで、失敗していると思われる Ghost4j のコードを確認できます (リンク):

    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 が sesponsable である理由を確認できます (リンク):

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)で、に隠され、catchghost4j が予期しない未解析バージョンを返しました。

于 2013-11-22T12:45:45.907 に答える