Op maandag 28 mei 2012 19:20 CEST schreef Philip Paeps:
> Cecil Westerhof <
Ce...@decebal.nl> wrote:
>> Ik ben op het ogenblik met postscript aan het stoeien. Ik ben al zover
>> dat ik een bibliotheek wil maken. ;-}
>>
>> Daarom doe ik in een bestand:
>> (~/postscript/includes/standard.eps) run
>>
>> Als ik een PDF probeer te maken met:
>> epstopdf 4QuadrantsCovey.eps
>
> Eerst en vooral doet gs geen ~-interpolatie. Je moet je ~ dus vervangen door
> het pad.
Ik had allebei geprobeerd, maar deze hadden hetzelfde effect.
> Verder draaien wrappers als epstopdf gs met -dSAFER, waardoor ze geen access
> hebben tot het filesystem (geen overbodige maatregel).
En dat had hier natuurlijk mee te maken. ;-}
> Je moet dus pdfwriter
> zelf wrappen. Bijvoorbeeld met:
>
> gs -q -dBATCH -dNOPAUSE -sPAPERSIZE=a4 -sDEVICE=pdfwrite \
> -sOutputFile=4QuadrantsCovey.pdf 4QuadrantsCovey.eps
Er zijn twee problemen. De run levert een lege blanco pagina op, maar
wat vervelender is, is dat ik een A4 pagina krijg i.p.v. een bounding
box pagina. Ook als ik de papersize verwijder en ook als ik de versie
(die volgens mij) epstopdf gebruik zonder -dSAFER:
gs -q -dBATCH -dNOPAUSE -dSAFER -sDEVICE=pdfwrite
-sOutputFile=4QuadrantsCovey.pdf -dPDFSETTINGS=/prepress
-dMaxSubsetPct=100 -dSubsetFonts=true -dEmbedAllFonts=true
-dAutoRotatePages=/None 4QuadrantsCovey.eps
(Bovenstaande regel gewrapped daar de server geen regels langer dan 79
karakters accepteert. Was vroeger geen probleem.)
Een voorbeeld bestand:
%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 0 0 600 400
/pageBottom 0 def
/pageLeft 0 def
/pageRight 600 def
/pageTop 400 def
%(/home/cecil/postscript/includes/standard.eps) run
/textheight {
gsave
{
newpath
100 100 moveto
(HÍpg) true charpath pathbbox % gets text path bounding box (LLx LLy URx URy)
exch pop 3 -1 roll pop % keeps LLy and URy
exch sub % URy - LLy
}
stopped % did the last block fail?
{
pop pop % get rid of "stopped" junk
currentfont /FontMatrix get 3 get % gets alternative text height
}
if
grestore
} def
/backgroundColor {
newpath
gsave
.6 setgray
newpath
pageLeft pageBottom pageRight pageTop rectangle
fill
stroke
.4 setgray
usedFont
authorFont scalefont
setfont
((c) Cecil Westerhof - Decebal Computing) 550 5 rightString
grestore
} def
/centerString {
3 dict begin
/y exch def
/x exch def
/string exch def
x y moveto
string stringwidth pop -2 div
textheight -2 div
rmoveto
string
show
end
} def
/rectangle {
4 dict begin
/top exch def
/right exch def
/bottom exch def
/left exch def
left bottom moveto
right bottom lineto
right top lineto
left top lineto
left bottom lineto
closepath
end
} def
/rightString {
3 dict begin
/y exch def
/x exch def
/string exch def
x y moveto
string stringwidth pop neg
0
rmoveto
string
show
end
} def
/titleX 300 def
/usedFont /Bookman findfont def
/authorFont 10 def
/titleFont 25 def
backgroundColor
newpath
usedFont
titleFont scalefont
setfont
(How the four Quadrants of Covey) titleX 250 centerString
(can help you get more done) titleX 200 centerString
usedFont
authorFont scalefont
setfont
(By Cecil Westerhof) titleX 100 centerString
showpage
Ik zou de PDF willen krijgen, die ik krijg met epstopdf, maar met de
mogelijkheid om met een include te werken. Alle functies horen
natuurlijk in een library thuis. Ik zou er een script voor kunnen
schrijven, maar als dat niet nodig is …
Wat ook vreemd is, is dat ik moet gebruiken:
((c) Cecil Westerhof - Decebal Computing)
terwijl ik zou verwachten dat ik zou kunnen gebruiken:
(\251 Cecil Westerhof - Decebal Computing)
\267 voor bullet werkt wel.
>> Operand stack:
>> (~/postscript/includes/standardsasas.eps) (r)
>
> Dit is niet dezelfde stack die je in je voorbeeld hierboven
> aangeeft...
Foutje. Ik had geprobeerd of ik een andere melding kreeg indien ik een
niet bestaand bestand gebruikte. Niet dus, maar dat is nu verklaard.