ps2pdf - velikost papíru (delší)

Zdenek Wagner wagner at cesnet.cz
Tue May 31 10:58:29 CEST 2005


On Mon, 30 May 2005, Hana Skoumalova wrote:

> Dobrý den,
>
> narazila jsem na záhadu. Kolega mě požádal o pomoc při převodu dokumentu
> z .ps do .pdf - ve výsledném souboru byl text nahoře oříznutý a on to
> chtěl spravit. To je typický příznak toho, že někde se použil parametr
> "letter" místo "a4", tak jsem na ten jeho postscript pustila "ps2pdf
> -sPAPERSIZE=a4" a ono to pomohlo. Jenže mně vrtá hlavou, jak se tam ten
> letter předtím dostal.
>
> V LaTeXovém zdrojáku je class article s volbou a4paper:
>
> \documentclass[a4paper,twocolumn]{article}
>
> Dále jsou nastaveny okraje pomocí balíku vmargin.sty:
>
Nastaveni velikosti v (La)TeXovem dokumentu vubec nesouvisi s velikosti
papiru. Jsou to 2 ruzne veci. Nedejte se zmast tim, ze pomoci balicku
vmargin, geometry a jinych nastavujete velikost papiru. NENI TO PRAVDA.
TeX zajima sirka a vyska tiskoveho zrcadla a poloha pocatecniho bodu
sazby, pripadne rozmery zahlavi a zapati. Velikost papiru se nenastavuje.
Temto balickum jen reknete, na jaky format chcete tisknout a s jakymi
okraji a ono Vam to dopocita rozmery tiskoveho zrcadla.

(Tak se mi zda, ze budu muset zverejnit svuj soukromy balicek, ktery krome
vypoctu rozmeru tiskoveho zrcadla vcetne zajisteni toho, ze vyska zrcadla
je celociselnym nasobkem vysky radku, nastavi i velikost papiru.)

> \usepackage[A4]{vmargin}
> \setmargnohfrb{0.4in}{0.4in}{0.4in}{0.4in}
>   \pagestyle{empty}
>
> Soubor byl přeložen latexem a výsledný .dvi soubor byl převeden pomocí
> dvips do .ps. Když si ten .ps prohlídnu programem gv, objeví se mi v
> horní liště jako rozměr papíru BBox (zřejmě kvůli tomu čarování s
> okraji), ale když se podívám do to postscriptu, údaj o velikosti papíru
> a4 tam pořád je, i když ne na začátku:
>
> %!PS-Adobe-2.0
> %%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software
> %%Title: abstract.dvi
> %%Pages: 2
> %%PageOrder: Ascend
> %%BoundingBox: 0 0 596 842
> %%DocumentFonts: Times-Roman Times-Italic Times-Bold
> %%EndComments
> %DVIPSWebPage: (www.radicaleye.com)
> %DVIPSCommandLine: dvips -f abstract
> %DVIPSParameters: dpi=600, compressed
> %DVIPSSource:  TeX output 2005.05.30:1605
> %%BeginProcSet: texc.pro
> %!
> ...
> %%EndProlog
> %%BeginSetup
> %%Feature: *Resolution 600dpi
> TeXDict begin
> %%PaperSize: A4
>   end
> %%EndSetup
>
Zde se rika, ze predpokladany format papiru je A4 a vystupni zarizeni jej
ma jako default, tudiz neni treba nic nastavovat.

> Pak to proženu skrz ps2pdf a na výšku je to ořízlé. ps2pdf je script,
> který volá další script atd., takže nakonec se volá toto:
>
> exec gs $OPTIONS -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite
> "-sOutputFile=$outfile"
> $OPTIONS -c .setpdfwrite -f "$infile"
>
> Do OPTIONS se postupně nabalí -dSAFER a -dCompatibilityLevel=1.2, ale o
> velikosti papíru tam nic není. Měla by se tedy brát nějaká defaultní
> hodnota pro gs. V logu o instalaci gs je toto:
>
> CLASSES=none setpapersize
> TZ=Europe/Prague
> PATH=/sbin:/usr/sbin:/usr/bin:/usr/sadm/install/bin
> OAMBASE=/usr/sadm/sysadm
> ARCH=sparc
> PKG=CSWgs
> NAME=ghostscript - PostScript and PDF interpreter for previewing,
> conversion, and printing
> VERSION=7.7,REV=2003.12.27
> CATEGORY=application
> VENDOR=http://www.ghostscript.com/ packaged for CSW by James Lee
> HOTLINE=http://www.blastwave.org/bugtrack/
> EMAIL=james at blastwave.org
> PSTAMP=apollo20031226080613
> PKGINST=CSWgs
> PKGSAV=/var/sadm/pkg/CSWgs/save
> PAPER=A4
> INSTDATE=Feb 04 2004 14:36
>
> Takže defaultní hodnota pro velikost papíru by měla být A4. Zkoušela
> jsem se dívat i do souborů v .../ghostscript/lib/ a velikost papíru se
> (zřejmě) nastavuje v gs_init.ps:
>
> % Optionally choose a default paper size other than U.S. letter.
>   (a4) /PAPERSIZE where { pop pop } { /PAPERSIZE exch def } ifelse
>
> Tohle nevím, jestli je dobře, v postscriptu se nevyznám, ale vzniklo to
> zřejmě při instalaci jako výsledek konfigurace.
>
tohle do /PAPERSIZE vlozi textovy retezec a4, nikoliv PS operator a4, ale
netusim, kde a jak se PAPERSIZE. Pokud je pouzita sekvence PAPERSIZE cvlit
exec, pak se nastavi velikost A4, ale tak podrobne GS neznam.

Nedavno jsme totez resili pro Distiller. GS ma implementovano temer vse,
co umi Distiller, takze velikost papiru pro ps2pdf se nastavuje uplne
stejne.

> Mohl by mi prosím někdo vysvětlit, proč je zapotřebí dávat tomu ps2pdf
> parametr -sPAPERSIZE=a4?
>
> S pozdravem
>
> Hana Skoumalová
>

Zdenek Wagner
e-mail: wagner at cesnet.cz

see also http://hroch486.icpf.cas.cz/wagner/
         http://icebearsoft.euweb.cz





More information about the csTeX mailing list