Comment ajuster la boîte englobante d'un fichier EPS?
Je veux rogner la zone principale d'un PS
ou PDF
fichier pour créer un EPS
fichier sans espace blanc. Les commandes de ghostrcipt
, ps2pdf
, epstools
pouvez recadrer les principaux dessin de fichier du document.
Le problème c'est qu'ils ne récolte dans sa forme originale, mais je veux créer un fichier EPS avec BoundingBox 0 0 x y
; recadrée et déplacé vers le coin en bas à gauche.
La différence que j'ai quand nous voulons insérer le fichier EPS obtenu à l'intérieur d'un document PS. Lorsque BoundingBox x0 y0 x y
, le PS document insère le fichier EPS au point x0 y0, au lieu de l'endroit où nous sommes.
EXEMPLE:
Envisager une simple PS
fichier
%!
/Times-Roman findfont
11 scalefont setfont
72 700 moveto
(This is a test)show
si la conversion à EPS
avec une commande comme
ps2eps test.ps test.eps
Il va produire
%!PS-Adobe-2.0 EPSF-2.0
%%BoundingBox: 72 700 127 708
%%HiResBoundingBox: 72.000000 700.000000 127.000000 707.500000
%%EndComments
% EPSF created by ps2eps 1.68
%%BeginProlog
save
countdictstack
mark
newpath
/showpage {} def
/setpagedevice {pop} def
%%EndProlog
%%Page 1 1
/Times-Roman findfont
11 scalefont setfont
72 700 moveto
(This is a test)show
%%Trailer
cleartomark
countdictstack
exch sub { end } repeat
restore
%%EOF
Il a été rognée à ses coordonnées d'origine, et la BoundingBox
est 72 700 127 708
. Maintenant, si vous essayez d'insérer cette EPS
fichier à l'intérieur d'un PS
document, il essaie de nid à ces coordonnées.
Il sera utile en cas de création d'une EPS
fichier avec BoundingBox: 0 0 55 8
. Bien sûr, tout le dessin coordonnées (ici moveto) doivent être modifiées avec cette nouvelle référence.
REMARQUE: Comme l'a dit, mon but de fixer la BoundingBox point de référence est de rendre importables dans PS document. Ainsi, une alternative de réponse à cette question est: comment faire pour insérer un fichier EPS à l'intérieur de PS de document, indépendamment de sa boîte englobante.
Par exemple, comment insérer ce fichier EPS à l'emplacement 200 200 255 208
d'un PS document. J'essaie d'insérer l'EPS, avec le code suivant, mais il ne fonctionnera pas à moins que la boîte englobante est démarré à partir de 0 0
:
200 200 translate
save
/showpage {} bind def
(test.eps)run
restore
Le cas est général, mais je l'ai décrit mon problème avec des exemples.
OriginalL'auteur Googlebot | 2012-10-01
Vous devez vous connecter pour publier un commentaire.
Ce sujet tout simplement de l'onu-de la traduction?
Soit dans l'eps, lui-même, ou dans la préparation de la section avant de l'inclusion?
Maladroit!
Suivantes tapuscrit illustre un script awk qui effectue les modifications souhaitées
pour l'eps, guidé par l'ASN des commentaires (comme Maman!).
L'avantage est: si vous pouvez garantir que l'entrée EPS est conforme suffisamment à l'ASN pour fournir ces marqueurs, cette approche sera ordres de grandeur plus rapide que de passer le fichier par ghostscript.
La simplicité est à la fois l'avantage et la limitation de ce programme. Il analyse DSC des commentaires, des extraits de valeurs à partir de la boîte englobante commentaire, supprime la HiResBoundingBox, et ajoute postscript "traduire" et "rectclip' commnds juste après la Page de commentaires. Cela devrait produire des résultats corrects, tant que l'EPS est vraiment de bonne foi. Mais ghostscript approche dans l'autre réponse, les résultats sur les fichiers d'entrée sont moins fiables DSC-conformité (parce qu'il n'est pas en prenant des raccourcis, il traite l'ASN que les commentaires et les ignore complètement).
À proprement parler le "rectclip' ne devrait pas être nécessaire, mais la question demande que la sortie de l'être "recadré".
L'approche générale est de lire le %%BoundingBox commentaires, et de régler la CTM correctement avant de l'insérer l'EPS. Il est également de pratique courante d'inclure un élément de la BoundinBox (bien que cela ne devrait pas être nécessaire) et de redéfinir showpage à une valeur nulle de l'opération, bien que ceci ne devrait pas être nécessaire dans une bonne EPS. Néanmoins, de nombreux " EPS " les fichiers ne sont pas vraiment compatibles. Le point fondamental est que l'EPS, le consommateur est tenu de lire et d'agir sur les commentaires.
voir mon Ghostscript commandes pour une "approche générale'.
J'ai mis à jour avec un programmatique exemple. C'est une tâche simple nécessitant un programme simple, à mon humble avis.
OriginalL'auteur luser droog
De les convertir en EPS avec la BoundingBox-style que vous voulez, je voudrais utiliser Ghostscript et de laisser l'EPS de faire un aller-retour: EPS => PDF => EPS.
L'astuce est de s'assurer que le PDF utilise un format de support est le même que l'Emprise de la largeur et la hauteur sont en ajoutant de la
-dEPSCrop
param.Ces deux commandes permettant de créer votre 'EPS sans espace blanc':
1ère étape: convertir EPS en PDF:
2ème étape: convertir un document PDF en EPS:
Pour tester la fidélité de vos préparations, vous pouvez utiliser ImageMagick
compare
pour montrer les différences, pixel-sage en rouge, comme un fichier PNG:qui se traduit par:
Vous remarquerez qu'il y a quelques pixel différences. Ils sont causés par la valeur de 707.500000 de la
%%HiResBoundingBox
, ce qui conduit à une erreur d'arrondi plus tard (en PNG ne pouvez pas avoir " la moitié des pixels).OriginalL'auteur Kurt Pfeifle