jknapp
Goto Top

pdfs mischen, Zusammenführen und einzelne Seiten drehen

Hallo!

Ich habe da folgendes Problem und komme nicht weiter:

aus den Seiten von x.pdf und y.pdf möchte ich eine PDF Zusammenführen,
und zwar in folgender Struktur/Reihenfolge:
x.pdf, Seite1
y.pdf (kompl.)
x.pdf, Seite 2
y.pdf (kompl.)
x.pdf, Seite 2
usw.

danach muss jede gerade seite in der neuen PDF gedreht werden (180 Grad).

Ich habe keine Ahnung wie ich sowas anstelle, aber es muss automatisierbar sein (Batch o.ä.).

Mit pdftk und anderen tools bekomm ich es ned hin.

Erstmal würde mir der Hinweis welches tool sowas kann genügen.

Die Arbeit ist oft, mit Umfangreichen PDFs zu verrichten und von recht unversierten Usern zu verrichten,
deswegen genügt die Variante mit Adobe Acrobat "zu Fuss" nicht.

fettes Danke schonmal und Grüße aus Darmstadt !

Jochen

Content-ID: 109999

Url: https://administrator.de/contentid/109999

Ausgedruckt am: 22.11.2024 um 05:11 Uhr

StefanKittel
StefanKittel 25.02.2009 um 19:18:13 Uhr
Goto Top
Hallo,

wir verwenden dafür pdftk.exe. Das kann "fast" alles.

Stefan
miniversum
miniversum 25.02.2009 um 21:52:46 Uhr
Goto Top
Laut hier: http://www.pdfhacks.com/pdftk/
Drehen:
pdftk in.pdf cat 1-endS output out.pdf
Auseinandernehmen und neu kombinieren:
pdftk A=one.pdf B=two.pdf cat A1-7 B1-5 A8 output combined.pdf
jknapp
jknapp 26.02.2009 um 10:32:48 Uhr
Goto Top
Hallo,

danke erstmal, ich bin schon einen kleinen Schritt weiter,
mein grösstest Problem ist, dass pdftk die Option bietet, jede zweite Seite zu ENTNEHMEN und zu drehen,
d.h. es fehlt dann jede erste Seite.

Es soll aber alle Seiten drinlassen und trotzdem jede zweite drehen.

Hat noch jemand eine Idee ?

Danke !

Jochen
miniversum
miniversum 26.02.2009 um 13:10:10 Uhr
Goto Top
Schonmal so versuchet das du erst die PDFs zusammenfügst, dann wieder in die einzelnen Seiten zerlegst, die entsprechenden Seiten drehst und danach wieder zusammenfügst?
godlie
godlie 26.02.2009 um 15:57:26 Uhr
Goto Top
Also ich hab mir da mal ein paar gedanken gemacht, leider bin ihc auch auf eine bug gekommen vom pdftk was mich sehr beschäftigt hat.......

pathPDF = "E:\pdf-turn\elektronik.pdf"  
pdftk = "E:\pdf-turn\pdftk.exe "  

Set WshShell = WScript.CreateObject("WScript.Shell")   
Set fso = CreateObject("Scripting.FileSystemObject")  

intPos = inStrRev(pathPDF,"\")  
pathSplit = Left(pathPDF,intPos)
set oSplit = WshShell.Exec (pdftk & pathPDF &" burst output "&pathSplit&"out\%02d.pdf" )   
Do While oSplit.Status = 0
     WScript.Sleep 100
Loop 
if not( fso.FolderExists(pathSplit&"out") ) then  
  fso.CreateFolder(pathSplit&"out")  
end if
wscript.sleep 400
Set f = fso.GetFolder(pathSplit&"out")    
Set fc = f.Files 

For Each f1 in fc
msgBox f1
  intPos = InStrRev(f1,"\")  
  intDa = mid(f1, intPos+1)
  intPointPos = InStr(intDA,".")-1  
  intDa2 = Left(intDa,intPointPos)
  newFileName = left(f1,intPos)&intDa2&"-r.pdf"  
  if( intDa2 mod 2 = 0 ) then
    set oTurn = WshShell.Exec (pdftk & f1 &" cat 1E output "& newFileName )   
	Do While oTurn.Status = 0
     WScript.Sleep 100
    Loop 
	f1.Delete
  End if	
Next  
set oComp = WshShell.Exec( pdftk &pathSplit&"out\*.pdf cat output "&pathSplit&"combined.pdf")  
Do While oComp.Status = 0
     WScript.Sleep 100
Loop 
'fso.DeleteFolder(pathSplit&"out")  
Set fso = nothing
Set f = nothing
Set fc = nothing

Dieses Script geht erstmal her schaut ob im Zielverzeichnis der ordner out schon existiert, falls nicht erstellt es ihn.
Dorthin werden aus dem pdf alle Seiten einzeln abgelegt.
Danach wird das Verzeichnis durchstöbert und bei jedem 2 ten element wird ein drehen durchgeführt.
Wenn das alles fertig ist, gibs einen wiederzusammenbau und zum schluss sollte der ordner noch gelöscht werden aber da hackt die sache noch, wahrscheinlich irgendwo ein timing problem ....
Aber ansonsten im großen und ganzen funktionierts
jknapp
jknapp 26.02.2009 um 17:25:51 Uhr
Goto Top
Fettes Danke, godlie, hat zwar noch ned so ganz geklappt, aber muss ich mir nochmal in Ruhe reinziehen...!!

blöde Frage, bevor es da dran liegt: mit welcher Dateiendung führst du das aus ? Iss ned so mein Spezialgebiet...

meld mich

Jochen

ps: hast du ein Spendenkto. ? ;O)
godlie
godlie 26.02.2009 um 18:06:13 Uhr
Goto Top
hoi
ich werd das im laufe des wochenende oder am montag mal weiterdenke

die dateiendung ist *.vbs

grüße
jknapp
jknapp 27.02.2009 um 14:25:48 Uhr
Goto Top
Also, ich habe jetzt eine Batchdatei geschrieben die so aussieht:


@echo off
echo #### Deckblattverarbeitung ####
echo.
del C:\temp\PDF\split\*.* /F /Q
del C:\temp\PDF\out\*.* /F /Q
del C:\temp\PDF\dps\*.* /F /Q
del C:\temp\PDF\print\*.* /F /Q
echo entnehme ungerade Seiten in 1.pdf
pdftk A=deckblaetter.pdf cat Aodd output C:\temp\PDF\split\1.pdf dont_ask
echo entnehme gerade Seiten in 2.pdf und drehe 180 Grad
pdftk A=deckblaetter.pdf cat AevenD output C:\temp\PDF\split\2.pdf dont_ask
echo teile in Einzelseiten
pdftk C:\temp\PDF\split\1.pdf burst output C:\temp\PDF\split\%%04d_1.pdf dont_ask
pdftk C:\temp\PDF\split\2.pdf burst output C:\temp\PDF\split\%%04d_2.pdf dont_ask
del C:\temp\PDF\split\1.pdf
del C:\temp\PDF\split\2.pdf
pdftk C:\temp\PDF\split\*.pdf cat output 1.pdf dont_ask
pdftk 1.pdf burst output C:\temp\PDF\out\1%%03d_1.pdf dont_ask

echo #### Dienstplanverarbeitung ####
echo.
echo entnehme ungerade Seiten in 1.pdf
pdftk A=dp.pdf cat Aodd output C:\temp\PDF\dps\1.pdf dont_ask
echo entnehme gerade Seiten in 2.pdf und drehe 180 Grad
pdftk A=dp.pdf cat AevenD output C:\temp\PDF\dps\2.pdf dont_ask
echo teile in Einzelseiten
pdftk C:\temp\PDF\dps\1.pdf burst output C:\temp\PDF\dps\%%04d_1.pdf dont_ask
pdftk C:\temp\PDF\dps\2.pdf burst output C:\temp\PDF\dps\%%04d_2.pdf dont_ask
del C:\temp\PDF\dps\1.pdf
del C:\temp\PDF\dps\2.pdf
pdftk C:\temp\PDF\dps\*.pdf cat output dps_print.pdf dont_ask
echo.

echo #### Zusammenfuehren ####
set Filter=*.*
set /A DateiAnzahl=0
for /R C:\temp\PDF\split %%f in (%Filter%) do (
set /A DateiAnzahl += 1
)
echo.
set /A DateiAnzahl+=1000
echo %DateiAnzahl%
Pause
REM vervielfältigen
for /L %%N IN (1001, 1, %DateiAnzahl%) DO (
copy dps_print.pdf C:\temp\PDF\out\%%N_2.pdf
)
pdftk C:\temp\PDF\out\*.pdf cat output C:\temp\PDF\print\print_Fahrer.pdf dont_ask
rem del C:\temp\PDF\split\*.* /F /Q
rem del C:\temp\PDF\out\*.* /F /Q
rem del C:\temp\PDF\dps\*.* /F /Q
rem del C:\temp\PDF\print\*.* /F /Q

die Ordner
C:\temp\PDF\split\*.* /F /Q
C:\temp\PDF\out\*.* /F /Q
C:\temp\PDF\dps\*.* /F /Q
C:\temp\PDF\print\*.* /F /Q
müssen existieren und die Beiden Ausgangsdateien
"Deckblaetter.pdf "
und
"dp.pdf"

Das erhöhen der Variablen um 1000 (For Schleife ganz unten) und am Ende der Deckblattverarbeitung hat denn Sinn, das die Sortierung hinterher richtig ist, im explorer sah das zwar
gut aus, aber pdftk hat es verwurstet. Führende Nullen geht zwar mit pdftk aber mit der Batchvariablen hab ich es ned hinbekommen.

Im Ordner "print" liegt am Ende eine fertige Datei, bei der jede Zweite Seite auf den Kopf gedreht ist.
das ganze macht natürlich nur Sinn, wenn die Dokumente eine gerade Seitenzahl haben,
in unserem Fall ist das aber immer gegeben (Doppelseitiger Druck mit automatischer Leerseite, damit Seite 1 von Dienstplan 2 nicht auf der Rückseite
von Dienstplan 2 landet...)

ist noch ein bischen hässlich, aber es funktioniert alles was ich brauche....

Danke euch !!!
Ideen für mehr "eleganz" sind aber immernoch jederzeit willkommen...

Gruß aus Darmstadt
Jochen
jknapp
jknapp 27.02.2009 um 14:34:10 Uhr
Goto Top
Zitat von @miniversum:
Schonmal so versuchet das du erst die PDFs zusammenfügst, dann
wieder in die einzelnen Seiten zerlegst, die entsprechenden Seiten
drehst und danach wieder zusammenfügst?


war dann eigentlich der Lösung recht nahe, nur andere Reihenfolge, weil die Dateien regelrecht "vermischt" werden müssen...