[cstex] posunutie vlozenych pdf stran k okrajom

Petr Olsak petr at olsak.net
Thu Sep 19 08:10:15 CEST 2013


On Wed, 18 Sep 2013, Jaromír Kuben wrote:

> Dobrý den.
>
> Zdenek Wagner napsal(a):
>>  Dne 18. září 2013 16:12 Petr Mikulik <mikulik at physics.muni.cz> napsal(a):
>> > > >  Muzete zde prosim publikovat makro, ktere vrati pocet stran pdf 
>> > > >  souboru?
>> > > 
>> > >  % Makro na zjištění počtu stran v souboru a uložení do zadané 
>> > >  kontrolní
>> > >  sekvence
>> > >  \def\ZWPDFgetnum #1 #2{\pdfximage{#1}\edef#2{\the\pdflastximagepages}}
>> > 
>> >  Díky, funguje to.
>> > 
>> > >  Zrovna tento problém popisuji v další kapitole TeXu pro pragmatiky, 
>> > >  kterou
>> > >  ještě nemám ve stadiu celkového zveřejnění. Nicméně, vyškubal
>> > >    http://petr.olsak.net/ftp/olsak/tpp/tpp-s.pdf
>> > 
>> >  Se zájmem jsem si tento popis přečetl. Díval jsem se pak na to, jak 
>> >  závisí
>> >  velikost výstupního souboru, když si makrem \ZWPDFgetnum načtu počet
>> >  stránek, a ta se nemění, proto se dotazovaný pdf soubor určitě do 
>> >  výstupního
>> >  pdf
>> >  nevloží.
>> > 
>> >  Proto si myslím, že v tpp-s.pdf hned na první stránce, kde se diskutují
>> >  parametry pro \pdfximage, by mělo být napsáno, že když parametry 
>> >  "height" a
>> >  "width" chybí, tak se obrázek netiskne, nikoliv že se tiskne v přirozené
>> >  velikosti. Nebo že se data načtou do paměti, ale ne že se vloží do
>> >  výstupního PDF.
>> >
>>  Ne, ten popis je dobře. Všimněte si, že potřebujete dva primitivy.
>>  Prvním primitivem se načte objekt do paměti, druhým primitivem se
>>  objekt pošle do výstupního souboru. Když si schováte číslo objektu
>>  tak, jak je to v popisu uvedeno, můžete jej vložit opakovaně, ale ve
>>  výsledném PDF bude jenom jednou. Představte si, že máte
>>  tisícistránkovou knihu a na každou stránku chcete vložit bitmapové
>>  logo. LaTeXový příkaz \includegraphics vloží do výsledného PDF tisíc
>>  identických objektů, zatímco popisovanou metodou vytvoříte jeden
>>  objekt v PDF, který bude tisíckrát použit. Rozdíl ve velikosti
>>  výsledného souboru může být obrovský. V jednom ze Zpravodajů to popsal
>>  i Vít Zýka.

> Nicméně já jsem tomu rozuměl tak jako pan Mikulík. Petr Olšák píše, že příkaz 
> \pdfximage vloží data obrázku do výstupního PDF. Pak by se velikost souboru 
> musela změnit, i když by obrázek nebyl ani jednou zobrazen příkazem 
> \pdfrefximage. Vypadá to tedy, že se načte do paměti a do souboru je 
> přemístěn až po prvním zobrazení. Případná další zobrazení ho už pak znovu 
> nepřesouvají. Nebo je to ještě nějak jinak? Rozhodně by mne to zajímalo, jak 
> přesně to funguje a kdy vlastně dojde k přesunutí dat obrázku do souboru, je 
> to užitečný poznatek.
>
> Zdraví
>             Jaromír Kuben


Připouštím, že v textu mám nepřesnost, které jsem se v zájmu jednoduchosti 
dopustil záměrně, ale asi to ještě opravím. Opravdu přesný popis 
\pdfximage je tento:

Není-li \pdfximage prefixován pomocí \immediate, pak si pdfTeX přečte z 
obrázku jen minimální potřebné údaje. Alokuje číslo objektu do 
\pdflastximage, případně nastaví \pdflastximagepages. Dále z přečtených 
dat zjistí, jak velký by vzniknul box po případném následném použití 
\pdfrefximage.

V okamžiku použití \pdfrefximage se taky nic moc neděje, jen se do sazby 
vloží box potřebných rozměrů a značka. Teprve při výskytu této značky 
během \shipout pdfTeX vyhodnotí, zda to je první výskyt obrázku. Pokud 
ano, pak přesně v tomto okamžiku znovu otevře soubor s obrázkem a nyní 
jeho data přemístí (a případně konvertuje) do výstupního PDF. To poznáme v 
logu tak, že se tam zjeví <obrazek.pripona>. Je-li v shipout druhý nebo 
další výskyt stejné značky, realizuje pdfTeX obrázek odkazem.

No, a nyní mi poraďte, jak toto napsat stručně a pragmaticky v jedné 
větě...

Zdravím

Petr Olšák



>> > >  V TeX Live je program pdfcrop, který ořeže i ve vícestránkovém souboru
>> > >  každou stránku samostatně.
>> > 
>> >  Já tento program dosud používal pouze na jednostránkové obrázky, ale 
>> >  opravdu
>> >  funguje i na vícestránkové (na každou stránku zvlášť).
>> > 
>> >  ---
>> >  Petr Mikulík
>> >  _______________________________________________
>> >  csTeX mailing list
>> >  csTeX at cs.felk.cvut.cz
>> >  https://lists.felk.cvut.cz/mailman/listinfo/cstex
>> > 
>> 
>> 
>
> _______________________________________________
> csTeX mailing list
> csTeX at cs.felk.cvut.cz
> https://lists.felk.cvut.cz/mailman/listinfo/cstex
>


More information about the csTeX mailing list