Je souhaite prendre le format de page du document, tel que A4, A5, A6 etc.

Solution, dont j'ai trouvé qu'il s'agissait d'analyser le texte postscript et d'extraire la chaîne 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 ceci? Existe-t-il des bibliothèques pour obtenir des informations complètes sur les documents?

Je préfère les solutions en java, si elles existent.

1
XIII-th 16 janv. 2017 à 13:54

2 réponses

Meilleure réponse

Votre solution ne fonctionne que pour un fichier conforme DSC (Document Structure Convention). Alors que de nombreux fichiers sont conformes, d'autres non. De plus, cela ne fonctionne que si le fichier PostScript contient un commentaire (% introduit un commentaire dans PostScript).

Vous pouvez à la place remplacer l'opérateur setpagedevice et lui faire imprimer le format de support demandé s'il est présent.

/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

Qu'entendez-vous par «informations complètes sur le document»? Soit dit en passant, vous devez être conscient que (contrairement au PDF) les fichiers PostScript sont des programmes et non des documents. Donc, la seule façon de savoir ce qui se passe réellement est d'interpréter le programme.

Vous pouvez utiliser Ghostscript, mais il n'a pas d'interface Java et vous devez être beaucoup plus précis sur les informations que vous souhaitez.

1
KenS 16 janv. 2017 à 11:27

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

Les informations sont généralement imprimées au format stderr au format DSC %%BoundingBox: x0 y0 x1 y1.

0
luser droog 19 janv. 2017 à 05:32