2017-01-16 3 views
1

Je souhaite prendre la taille de la page du document, comme A4, A5, A6 etc.Postscript. Obtenez le document Taille de la page

solution, je l'ai trouvé est l'analyse du texte postscript et la chaîne extraction A6 de

featurebegin{ 
%%BeginFeature: *PageSize A6 

    <</DeferredMediaSelection true /PageSize [298 420] /ImagingBBox null /MediaClass null>> setpagedevice 
%%EndFeature 
}featurecleanup 

mais cela fonctionne lentement ...

Comment puis-je faire cela? Existe-t-il des bibliothèques pour obtenir des informations complètes sur les documents?

Je préfère des solutions en java, si elle existe.

+0

Trouvez-vous une copie du fonctionnaire * Langue PostScript Référence *. Un fichier "PostScript", en général, n'a pas (ni besoin!) De mentionner une taille de page, bien qu'une taille de page physique puisse être "supposée pendant la génération de cette description de page" (de ref.), Et ceci est habituellement les dimensions en points, pas par le nom que vous pensez. – usr2564301

Répondre

1

Votre solution, il ne fonctionne que pour un DSC (Convention de structure du document) fichier conforme. Alors que de nombreux fichiers sont conformes, d'autres ne le font pas. Cela ne fonctionne également que si le fichier PostScript contient un commentaire (% introduit un commentaire dans PostScript).

Vous pourriez plutôt remplacer l'opérateur setpagedevice et l'ont imprimer le format du support demandé si elle est présente.

/Oldsetpagedevice /setpagedevice load def 

/setpagedevice { 
    dup /PageSize known { 
    dup /PageSize get 
    dup 0 get 20 string cvs exch 1 get 20 string cvs exch 
    (Requested Media Size is) print print (points by) print print (points\n) print 
    } if 
    Oldsetpagedevice 
} bind def 

Que voulez-vous dire par «informations sur le document complet»? En passant, vous devez être conscient que (contrairement au format PDF) les fichiers PostScript sont des programmes, pas des documents. Donc, le seulement façon de savoir ce qui se passe réellement est d'interpréter le programme.

Vous pouvez utiliser Ghostscript, mais il ne dispose pas d'une interface Java, et vous auriez besoin d'être beaucoup plus précis sur les informations que vous souhaitez.

+0

Quelles informations je peux prendre par ** Ghostscript **? – Sergey

+0

FYI, 'DeferredMediaSelection' est décrit dans le PLRM que j'ai (3e éd.), Mais bien sûr, il n'y a aucune garantie que le document contient cela. (@Sergey: c'est utile pour vous parce que sa valeur '/ PageSize' est ce que j'ai mentionné ci-dessus: la taille en points.) – usr2564301

+0

@RadLexus En points ... J'ai compris :( – Sergey

0

Si vous exécutez le postscript via ghostscript avec -sDEVICE=bbox il signalerait les coins d'un rectangle qui recadre la sortie rendue, ce qui peut être (proche de) ce que vous voulez.

L'information est généralement imprimée au stderr dans un format DSC %%BoundingBox: x0 y0 x1 y1.