2008-11-03 4 views
6

L'enregistrement de données dans Postscript dans mon application génère un fichier Postscript que je peux visualiser sans problème dans GhostView, mais lorsque j'essaie de l'imprimer, l'imprimante ne parvient pas à l'imprimer car elle semble invalide.Valider un Postscript sans essayer de l'imprimer?

Existe-t-il un moyen de valider/trouver des erreurs dans les fichiers Postscript sans les envoyer à une imprimante? Préféré serait une sorte d'API Java/bibliothèque, mais un programme qui fait la même chose serait bien aussi.


Edit # 1: non, je ne sais pas pourquoi il est invalide, ni même nécessairement si elle est invalide, mais voudrait être en mesure de valider en dehors de ghostview, ou comprendre ce qui se passe quand il ne peut pas imprimer.


Réponse: Eh bien en utilisant l'astuce de ps2ps j'ai pu voir la sortie que Postscript fait et il vérifier la différence. La différence était que je ne suis pas autorisé à avoir un nombre décimal pour la largeur ou la hauteur des images dans le Postscript, mais plutôt seulement des nombres entiers. Donc, je n'ai toujours pas trouvé de moyen de valider, mais cette méthode était assez bonne pour mon problème. Merci.

Répondre

3

Si vous pouvez le voir sur ghostview, cela signifie que ghostscript peut l'analyser.

Alors, un truc que vous pouvez essayer d'utiliser pour imprimer (mais pas pour valider réellement) votre fichier serait d'utiliser le mode de sortie postscript de Ghostscript (il y a une enveloppe appelée ps2ps pour elle, ce qui ajoute principalement -sDEVICE=pswrite, il y a aussi ps2ps2 qui utilise -sDEVICE=ps2write).

4

Savez-vous pourquoi c'est invalide? Ma suggestion aurait été de le fournir à Ghostscript/Ghostvoiew, mais étant donné que Ghostview peut le voir, il semblerait qu'au moins certains interprètes pensent qu'il s'agit d'un Postscript valide. Il peut s'agir de quelque chose de spécifique à votre imprimante: soit il s'agit de quelque chose dans le PS que Ghostscript autorise, soit il accède à quelque chose qui n'existe pas sur votre imprimante (système de fichiers, peut-être) ou dépasse certaines limites de mémoire, ou ...

Le point étant qu'il ne peut pas être un programme erroné PS et donc une bibliothèque/API pour valider pourrait ne pas aider

Edit: est-ce que tout ça imprimer? Avez-vous essayé une imprimante d'un fabricant différent (ou vendeur de l'interpréteur Postscript, de toute façon). Est-ce que Ghostview envoie/enregistre des avertissements ou des erreurs?

D'où (quelle est l'application) provient le document?

Pouvez-vous générer d'autres instances du document? (Par exemple, un très simple/vide pour voir si cela donne aussi des erreurs)

A moins d'une API permettant d'accéder à l'interpréteur spécifique qui est utilisé dans votre imprimante, je pense que vous sont valider contre un autre interpréteur PS (Ghostscript).

Comme il n'y a pas que de nombreux clones PS dans le monde, à avoir accès à un autre à base de non-GS est probablement ne va pas être facile

Edit2: Ce lien (si l'information assez vieux) donne des informations sur comment obtenir plus de détails de votre imprimante sur l'erreur: http://www.quite.com/ps/errors.htm

7

Chaque fois que je dois valider un fichier PostScript à l'aide Ghostscript sans avoir à réellement regarder ses images de pages rendues j'utiliser le dispositif « nullpage »:

gswin32c^
    -sDEVICE=nullpage^
    -dNOPAUSE^
    -dBATCH^
    c:/path/to/file/to/be/validated.pdf-or-ps^
    1>validated.stdout^
    2>validated.stderr 

En cas de problème, il y aura un non -zero %errorlevel% défini, et le fichier journal validated.stderr contiendra tous les messages que Ghostscript crachera pendant le rendu.

Questions connexes