Fórumok
Sziasztok!
Latex-hel generált,sok képet tartalmazópdf fájlt szeretnék tömörebben előállítani.
Az eredeti fájlom 16 MB, ha ebből fájlba nyomtatom a felét, hirtelen 130MB-ra növekedik a méret. Nem tudom ennek okát, nyilván a pdfolvasók fájlba nyomtatásakor eltűnik a tömörítés, melyet a latex fordító és a dvipdf rendesen megcsinál.
Van erre valami megoldás?
Hozzászólások
Nem értem mid van és mit szeretnél.
Egy adott pdf file néhány oldalát szeretnéd kiszedni egy másik pdf file-ba úgy, hogy ne nőjön a mérete? Én a pdfpages csomaggal (\usepackage{pdfpages} és \includepdf parancs) szoktam babrálni a meglevő könyveimet (összefűzöm, átrendezem, bookmarkokat rakok bele).
Vagy olyan pdf-et akarsz előállítani, amit a pdfolvasód nyomtatója jól kezel? Szerintem a képeket ha jpg-ben csatolod, akkor a pdfolvasó nyomtatója nem fog vele foglalkozni, egy-az-egyben be fogja illeszteni konvertálgatás nélkül.
Vagy valami más?
pdftk input.pdf cat 1-akárhány output fele.pdf?
BlackY
"Gyakran hasznos ugyanis, ha számlálni tudjuk, hányszor futott le már egy végtelenciklus." (haroldking)
Ezzel azonnal sikerult megirnom kis scriptemet. Koszonom!
A ghostscriptes es egyeb modszerek is erdekesek lehetnek
10-féle lény van:
-- aki ismeri a bináris számrendszert,
-- és amelyik nem.
Koszi, megnezem mindkettot. Eddig atril, foxitreader es evince programokat hasznaltam, ezek egyike sem volt megfelelo. Otszorosere novelte a filemereteket.
Gondom azzal van, hogy minden oldal kapott grafikai elemet, a pdfwriterek szerintem ezeket egyesevel hozzairjak a kimeneti fajlhoz, emiatt adodik a meretnovekedes
10-féle lény van:
-- aki ismeri a bináris számrendszert,
-- és amelyik nem.
Tudtommal a PDF-et, akárcsak a JPG-t nem lehet tovább tömöríteni. De javítsatok ki, ha tévedek.
Lehet, pl. a képeket áttömöríted benne, kidobod belőle a beágyazott fontokat stb. Az Acrobat pl. így tudja https://helpx.adobe.com/hu/acrobat/how-to/compress-pdf.html
Szerk.: Ez jobb link: https://helpx.adobe.com/hu/acrobat/using/optimizing-pdfs-acrobat-pro.ht…
BlackY
"Gyakran hasznos ugyanis, ha számlálni tudjuk, hányszor futott le már egy végtelenciklus." (haroldking)
Mindegyiket lehet lossy és egyes esetekben lossless módon is tovább tömöríteni (például JPG-nél huffman->arithmetic konverzió).
Ha jól értem az a cél, hogy csak bizonyos oldalakat tarts meg az eredeti pdf-ből. Erre nem a fájlba nyomtatás a jó megoldás, de ezt a próbálkozásból már te is látod. Számtalan pdf matató eszköz van, amivel ezt remekül el lehet végezni, ha kényelmes kell: pdfarranger, pdfsam, de azt hiszem a pdfchain is tud ilyet. Ágyúval verébre, de a masterpdfeditorral is meg lehet sztem csinálni. Parancssorból meg pdftk, de megoldható ghostscripttel is, ha igazán perverz vagy :D Ezek mellett biztos, hogy akad még erre kitalált script is pár, már találkoztam ilyennel.
A pdfjam is egy opció lehet:
Ez az input.pdf fájl 1-3. oldalát írja ki az output.pdf-be. A pdfjam szkript a TeXLive része (ami egyébként a pdfpages csomagot használja, amit fentebb bohocmasni említett).
Föntebb már sok ötlet előjött, az eredeti problémához háttérinfó:
ha pl. az okular-ral megnyitok egy PDF 1.5-ös fájlt, és a "nyomtatás fájlba PDF-ként" opciót választom, az eredetinél valóban sokkal nagyobb, PDF 1.4-es fájlt ír ki a program.
Ha valaki unatkozik a karantén alatt, itt az idő a parancssoros GhostScript opciókat megtanulni :D
https://www.ghostscript.com/doc/current/VectorDevices.htm
Ezek célszerű párosításaival is lehet faragni az outputon.
Már sokadjára van említve a ghostscript. De tudtommal éppen az az, ami pdf átkódolásra való. (Akár azt is megkockáztatom hogy az okular, evince stb azt hívja meg nyomtatáshoz.)
OP-nak ennek a szöges ellenkezője kell, valami, ami _nem_ kódolja újra a PDF-et.
Nem feltétlen kódolja át, de alapvetően igazad van, a gs inkább akkor jöjjön a képbe, ha spec formába kell áttolni a meglévő anyagot, pl eszközre/kimenetre optimalizálni. A CUPS is a gs-t használja valóban, ha pdf-be nyomtat.
De arra például remek, ha van egy "tömörítetlen" pdf, amit képernyőre szeretnénk optimalizálni minél kisebb méretben. Vagy épp nyomdakész pdf-et kell csinálni - bár ez utóbbi már nem kezdő feladat és eléggé el lehet veszni a dokumentációjában.
Hát én nem vagyok abban biztos, hogy a legegyszerűbb split paranccsal ne hatalmas PDF-et kapna a kérdező, de még abban sem, hogy bárhogyan elérhetné ghostscript segítségével, amit akar.
De még ha megoldható is, alapvetően az ellenkezőjére való.
Mert nem ismered a ghostscriptet. Nincs olyan, hogy split parancs, egész másként működik, ebbe most ne is menjünk bele. De hogy ne a levegőbe beszéljek, egy minimalista példa a fentiek megoldására, meg talán érthetőbb is:
Ez esetben nem simán split történik, de nem nyúl a képtartalmakhoz, és nem raszterezi a vektoros tartalmakat, a méret az eredetihez közeli marad. Viszont a pdf verzió az aktuálisan a gs által támogatott legfrissebb lesz (nálam pl 1.7). További paraméterekkel beállítható még sokminden, pl a pdf verzió ha kell. De mint fentebb is írtam, és ebből is látszik nem ez a legegyszerűbb módja a pdf szétszedésnek vagy épp összerakásnak sem. :) A gs egy ps/pdf interpreter, oda-vissza szinte mindent tud ezekkel a formátumokkal, így erre is "való", de segítségével szoftveres RIP is megvalósítható, és létezik is ilyen alkalmazása a CUPS pdf printeren kívül is.
De könnyedén lehet vele beállítható felbontású jpeg vagy más támogatott kimeneti képformátumú képszekvenciát is előállítani bármekkora dokumentumból, vagy a fenti parancsban megadott módon annak a részleteiből. Csak nem egyszerűek a parancsok.
A kiinduló problémára a magyarázat: ha a pdf úgy lett volna előállítva, hogy truetype vagy opentype vagy esetleg ps fontokat használ beágyazva, akkor azt valószínűleg nem így raszterezné, így nem lenne olyan nagy a kimenet sem, viszont pl a TeX saját raszterfontjait sajna így lehet csak kezelni.
A kiinduló problémában talán a képek vagy a "grafikai elemek" miatt nőtt meg a file mérete. (Nyilak vagy nem tudom.)
Igen, sok mindent tud, kérdés hogy tudja-e azt is, amit OP akar, vagyis szétszedni egy file-t, anélkül hogy babrálna valamit, amitől 10x-esére ugrik a file mérete.
Más: a pdf olvasó "nyomtatás file-ba" opciója az nyomtatható (tehát bizonyos dolgokban korlátozott) pdf-et generál? Mert a neve nem ezt sugallja.
Leteszteltem egy olyan pdf-en amiben fotók, grafikák és ábrák egyaránt vannak, az eredmény:
pdftk-val a kimenet 1,6 Mb
gs-sel a korábbi hsz-emben megadott módon: 1,6 Mb
Eléggé egyformának tűnik a végeredmény. Természetesen nem az, van különbség a pdf verzióban is, de a pdftk által használt itext sem hagyja változatlanul a pdf-et, ennek magában a formátumban van a magyarázata, ha érdekel olvass utána.
Hogy legyen csavar is a dologban, kinyomtattam ugyanazt a dokumentumot ugyanazokkal az oldalakkal pdf nyomtatón, és az is csak 1,6 Mb...
A tartalom mindenesetre azonos mind3nál. Most nincs kéznél olyan doksim amit a dvipdf generált, de fenntartom a korábbi álláspontom, hogy a problémás fájl a TeX metafontok miatt lett nagy. Érdemes lehet pdftex-el közvetlen, dvi közbeiktatása nélkül pdf-et generálni az ilyesmit elkerülendő szerintem.
szerk: a pdf printer és a pdf nézegető nyomtatás pdf-be kimenete nem ugyanaz, az előbbi a CUPS virtuális pdf nyomtatóján keresztül megy (és elérhető mindenhonnan, ahonnan nyomtatni lehet), a másik az nézegetőtől függően valamilyen egyéb megoldás, de nem igényli a CUPS jelenlétét.
Ha valaki LaTeX forrásból valamilyen értelemben - pl. méret szerint - optimális PDF outputot szeretne, messze nem olyan egyszerű a helyzet. Régen (huszonsok éve) sokat szórakoztam ezzel. Most is lehet kísérletezni, például
1) LaTeX forrás --> DVI fájl --> PS fájl --> PDF fájl
2) LaTeX forrás --> DVI fájl --> PDF fájl
3) LaTeX forrás --> PDF fájl
Általában minden konverziós lépéshez több program/szkript is választható több/kevesebb opcióval. Plusz még a használt fontok formátuma, és a beágyazott képek formátuma (meg a tömörítés paraméterei - ha tömörített) is befolyásolják a végeredményt...
ha meg aktualis…
ha optimalizalni akarom a fajlt akkor:
ha az oldalak szamat/sorrendjet akarom piszkalni akkor:
http://pdfshuffler.sourceforge.net/