pdf split

Fórumok

Hello mindenki!

A probléma.

Adott egy 20 oldalas pdf fájl, melyet ki kellene nyomtatni. A feneség az egészben az hogy ebből 18 lapon a kinyomtatandó rész kicsi. A lap 1/4-edét foglalja el.
A felső bal oldalon.

Jött az ötlet hogy valahogy össze kellene fésülni a dolgokat, de ehhez először nyilván szét kell vagdosni lapokra. Majd gondolom egyszerűbb a dolog ha képekként kezelném, vagyis átkonvertálnám png fájlokká, ezekről levágnám a felesleget, majd négyesével visszailleszteném őket a lapra. Vagyis a 18 oldalból a lap teljes kihasználása esetén lenne csak 5 oldal amit ki kell nyomtatni.

Mindezt persze egy kattintásos módszerrel, vagyis script lesz belőle. De nem ismerem a megfelelő programokat, melyek ezt megoldják. Eddig a pdftk, convert jutott eszembe. Csak a bashoz értek, tehát python, perl ötletek kíméljenek. De ha valakinek van erre esetleg már létező megoldása, az ne fogja vissza magát.

TNT csomagkísérő címkékről van egyébként szó. Minden egyes feladott dobozhoz egy vonalkódos lapot generál. Feladunk 18 dobozt, akkor 18 oldal jön ki. Holott egy lapra ráférne 4 doboz vonalkódja. A weboldalon nem találtam erre megoldást. 

Hozzászólások

apt-get install poppler-utils

man pdfseparate
man pdfunite

Szerkesztve: 2020. 11. 02., h - 20:21

Ha olyan a pdf, akár egy jól irányzott convert is elég lehet:

convert -density [dpi] input.pdf -trim +repage output.pdf

Ha nem olyan, még a -fuzz opcióval játszhatsz.

Szerk.: a +repage lemaradt

BlackY

"Gyakran hasznos ugyanis, ha számlálni tudjuk, hányszor futott le már egy végtelenciklus." (haroldking)

Ez a parancs sajnos ugyanannyi lapot generál, csak megnagyítja az adott lapon lévő vonalkódos szöveget. 
Valami ilyesmi a kapott vonalkódos szöveg laponként. 

-------------------
| |-------|            |
| |        |            |
| |        |            |
| |----- -|            |
|                       |
|                       |
|                       |
|                       |
|                       |
---------------------

Ebből kell 4 lapról összerakni 1 lapra dolgokat. Vagyis 3 lappal kevesebb kell. 18 vonalkód esetén 13 lappal kell kevesebb. Ez a nem mindegy.

Ja, hát odáig nem jutottam el az olvasásba, hogy utána össze is kell őket fűzni :)

De még az meg lehet egy parancson belül, egy montage-al, de az már tényleg nagyon PDF függő (vagy egy -append és +append, ha csinálsz közben ideiglenes fájlokat és több imagick hívás sem gond). (és közben elolvastam, hogy mi van a PDF-ekben, úgyhogy nem kérdezem, hogy fel tudsz-e tölteni valahova egyet...)

BlackY

"Gyakran hasznos ugyanis, ha számlálni tudjuk, hányszor futott le már egy végtelenciklus." (haroldking)

Köszi. az eddigieket. Nos odáig jutottam, hogy:

# Hány lapból áll a pdf dokumentum
pages=$(pdfinfo mergedDocument.pdf | grep Pages | awk -vFS=":" '{print $2}' | sed 's/ //g')

# az utolsó 2 az nem kell
(( numbers = pages - 2 ))

workdir="$(mktemp -d)" && chmod 0700 "${workdir}"
#trap 'rm -Rf ${workdir}' EXIT

# a pdf lapokra bontása
pdfseparate -f 1 -l ${numbers} mergedDocument.pdf ${workdir}/sample-%d.pdf

# A leválogatott lapok png képpé konvertálása, vágása, és egy kis szegély hozzáadása
cd ${workdir}
for files in *.pdf; do
    convert -density 300 -type grayscale ${files} -trim -border 30 -bordercolor black ${files%pdf}png
    rm -f *.pdf
done    

Ezután nézegettem a montaget is meg az append lehetőséget. De mind a kettőnél most az a nehézség hogy egy lapra 4 vonalkód szükséges. Nincs minden esetben 18 csomag, lehet hogy az utolsó lapra nem jön ki a 4 vonalkód, csak 3 vagy 2. Tehát valahogy 4-esével fel kell varázsolni a dolgokat. S a maradékot is figyelembe kell venni. A

montage sample-1.png sample-2.png sample-3.png sample-4.png -geometry +2+2 output1.png

Nagyon jó, de hogyan dolgozzam fel a többit? Ezt még nem értem. Azért döntöttem a png mellett mert talán könnyebb vele dolgozni. De ki tudja?

Én a pdfsam-et használom a szétválasztós célra. Java kell neki, de nem vészes. Nem tudom parancssorból meghívható-e.

Amúgy itt ezt tárgyalják, van egy pár megoldás:

https://askubuntu.com/questions/221962/how-can-i-extract-a-page-range-a…

Ez meg egy másik tutorialból való:

$ pdftk myoldfile.pdf burst 

By default, the output files are named pg_0001.pdf, pg_0002.pdf, etc.

pdftk is also capable of merging multiple pdf files into one pdf. 

Az elmélet az, amikor mindent ismerünk, de semmi nem működik. A gyakorlat az, amikor minden működik, de senki nem tudja, miért.

Megoldható a pdfjam paranccsal is, valahogy így:

pdfjam --a4paper --outfile output.pdf --nup 2x2 --noautoscale true --trim '0cm 16cm 11cm 0cm' --clip true --delta "5mm 5mm" --frame true input.pdf