Discussion:
Strona pdf na pół
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
AMX
2011-10-22 18:13:32 UTC
Permalink
Przepraszam za pytanie niezwiązane z TeXem ale narzędzia
około-TeXowe.

Mam dokument z 2 stronami na 1, potrzebuję odzyskać znowu
pojedyncze strony, czyli ,,przeciąć'' każdą stronę na pół i
przeskalować. Odwrotność psnup. Czy jest to wykonalne? A jeśli to
jak?

Kłaniam się w pół

AMX
--
adres w rot13
Nyrxfnaqre Znghfmnx r-***@b2.cy
Jarosław Sokołowski
2011-10-22 19:03:39 UTC
Permalink
Post by AMX
Przepraszam za pytanie niezwiązane z TeXem ale narzędzia
około-TeXowe.
Mam dokument z 2 stronami na 1, potrzebuję odzyskać znowu
pojedyncze strony, czyli ,,przeciąć'' każdą stronę na pół
i przeskalować. Odwrotność psnup. Czy jest to wykonalne?
A jeśli to jak?
Może za pomocą pdfTeXa? Potrafi używać plików PDF jako ilustracji,
więc można wklejać poszczególne półstrony wejściowego PDFa na
kolejnych stronach generowanych przez TeXa, odpowiednio je kadrując
i przesuwając. Kiedyś miałem podobny problem z plikiem PS i poszło
gładko po napisaniu krótkiego skryptu (TeX + dvips zamiast pdfTeX).
Post by AMX
Kłaniam się w pół
AMX
Jarek
--
Na dworze jest mrok,
W pociągu jest tłok,
Zaczyna się więc sielanka,
On objął ją wpół,
Ona gruba jak wół,
Bo pod paltem schowana rąbanka.
AMX
2011-10-22 20:48:17 UTC
Permalink
On Sat, 22 Oct 2011 19:03:39 +0000 (UTC),
Post by Jarosław Sokołowski
Post by AMX
Mam dokument z 2 stronami na 1, potrzebuję odzyskać znowu
pojedyncze strony, czyli ,,przeciąć'' każdą stronę na pół
i przeskalować. Odwrotność psnup. Czy jest to wykonalne?
A jeśli to jak?
Może za pomocą pdfTeXa? Potrafi używać plików PDF jako ilustracji,
więc można wklejać poszczególne półstrony wejściowego PDFa na
kolejnych stronach generowanych przez TeXa, odpowiednio je kadrując
i przesuwając. Kiedyś miałem podobny problem z plikiem PS i poszło
gładko po napisaniu krótkiego skryptu (TeX + dvips zamiast pdfTeX).
Dziękuję.

To rzeczywiście jest rozwiązanie (no pół). Nie muszę pracować w
pdf-ie, mogę w eps-ie, to bez znaczenia. Tylko jak wyciąć pół
strony z całej? Takiej sztuczki to nigdy nie robiłem.

AMX
--
adres w rot13
Nyrxfnaqre Znghfmnx r-***@b2.cy
Jarosław Sokołowski
2011-10-22 21:16:27 UTC
Permalink
Post by AMX
Post by Jarosław Sokołowski
Post by AMX
Mam dokument z 2 stronami na 1, potrzebuję odzyskać znowu
pojedyncze strony, czyli ,,przeciąć'' każdą stronę na pół
i przeskalować. Odwrotność psnup. Czy jest to wykonalne?
A jeśli to jak?
Może za pomocą pdfTeXa? Potrafi używać plików PDF jako ilustracji,
więc można wklejać poszczególne półstrony wejściowego PDFa na
kolejnych stronach generowanych przez TeXa, odpowiednio je kadrując
i przesuwając. Kiedyś miałem podobny problem z plikiem PS i poszło
gładko po napisaniu krótkiego skryptu (TeX + dvips zamiast pdfTeX).
Dziękuję.
To rzeczywiście jest rozwiązanie (no pół). Nie muszę pracować w
pdf-ie, mogę w eps-ie, to bez znaczenia. Tylko jak wyciąć pół
strony z całej? Takiej sztuczki to nigdy nie robiłem.
Z plikiem EPS to się robi tak:

\special{PSfile=plik.ps
llx=11
lly=22
urx=33
ury=44
rwi=1000 clip}

Numerki określające rogi "Lower Left" i "Upper Right" obrazka oraz
opcjonalne "rwi" i/lub "rhi" (szerokość i wysokość po przeskalowaniu)
podawane są w punktach postscriptowych czyli TeXowych "bp". Dla
wycięcia połowy strony kluczowym zaklęciem jest oczywiście "clip".

Spodziewam się, że ta TeXnika ma swój odpowiednid w dziedzinie PDF
i pdfTeX -- ale tego nigdy nie robiłem.
--
Jarek
Tomasz Sowa
2011-10-23 12:16:24 UTC
Permalink
Post by AMX
To rzeczywiście jest rozwiązanie (no pół). Nie muszę pracować w
pdf-ie, mogę w eps-ie, to bez znaczenia. Tylko jak wyciąć pół
strony z całej? Takiej sztuczki to nigdy nie robiłem.
Ogólnie w pdf-ie to się nie da, natomiast robi się to 'przycinając' --
poprostu nie widać tego co wystaje na zewnątrz papieru.
Naprzykład aby uzyskać prawą cześć strony to możesz ustawić hbox na długość
dwa razy szerokości strony, do niego zasiorbać pdf-a i poźniej ustawić
hoffset na wartość ujemną szerokości. To spowoduje że tylko prawa strona
oryginału będzie widoczna.

Ogólnie do pracy z pdfami polecam xetexa, wygenerujmy dla przykładu
prostego pdfa ze świnkami na każdej stronie:

\newcount\licznik
\licznik=1
\output{\ifodd\licznik\global\setbox200\box255\else{%
\hsize 42cm\shipout\hbox to 42cm{\hbox to 21cm{\box200}\hbox to
21cm{\box255}}}\fi}
\def\drukujswinke{swinka \the\licznik\par\vfill\eject}
\loop\ifnum\licznik<9\drukujswinke\advance\licznik by 1\repeat
\bye

$ xetex -papersize="420mm,297mm" swinka.tex
wygląda on tak:
http://tmp.slimaczek.pl/tmp/swinka.pdf

teraz chcemy zrobić z niego pdfa o szerokości stron 21cm, czyli to o co
pytasz:

\newdimen\szerokosc
\newdimen\wysokosc
\newcount\ilestron

% wynikowy pdf
\szerokosc=210mm
\wysokosc=297mm
\ilestron=8

% wejsciowy pdf zakladamy ze jest dwa razy szerszy
\newdimen\szerokoscdouble
\szerokoscdouble=\szerokosc
\multiply\szerokoscdouble by 2

\newcount\strona
\newcount\pdfstrona

\strona=0
\pdfstrona=1

\output{\shipout\box255}
\voffset=-1in

\loop\ifnum\strona<\ilestron
\hsize=\szerokosc
\hoffset=-1in
\vbox to \wysokosc{\hbox to \szerokosc{%
\XeTeXpdffile swinka.pdf page \pdfstrona \relax}}
\supereject
\hsize=\szerokoscdouble
\hoffset=-\szerokosc
\advance\hoffset by -1in
\vbox to \wysokosc{\hbox to \szerokoscdouble{%
\XeTeXpdffile swinka.pdf page \pdfstrona \relax}}
\supereject
\advance\strona by 2
\advance\pdfstrona by 1
\repeat

\bye

i uzywamy tego tak:
xetex -papersize "210mm,297mm" podziel.tex

i pdf gotowy:
http://tmp.slimaczek.pl/tmp/podziel.pdf
--
Tomek
http://www.ttmath.org
Loading...