ulle123
Goto Top

Mehrere Dateien(pdf) einlesen und in ein anderes Dateiformat konvertieren

Hallo Community,

ich habe ein Problem bei der Erstellung einer Batch-Datei die mir PDf´s in ein Bitmap oder sonstiges Bildformat konvertiert.
Nach einigen Google Recherchen bin ich auf folgendes Script gestoßen. Dieses benutzt zum Konvertieren das Programm Ghostscript


@echo off %debug%
if not exist %1.pdf goto usage
:doit
echo -I"C:\Programme\gs\gs8.53\bin\;C:\Programme\gs\fonts" >>_.cmd
echo -sDEVICE=bmp256 >>_.cmd
echo -r100x100 >>_.cmd
echo -dNOPAUSE >>_.cmd
echo -sOutputFile=%1%%d.bmp >>_.cmd
gswin32.exe @_.cmd %1.pdf -c quit
rem del _.cmd
goto end
:usage
echo.
echo Aufruf: pdf2bmp Dateiname
echo Die Namenserweiterung .PDF darf nicht mit
echo angegeben werden
echo.
:end


Dieses Script funktioniert für einzelne Pdf´s auch wunderbar. Nur ist es sehr aufwendig, in der Kommandozeile für jede Pdf dieses auszuführen.

Nun wollte ich gerne wissen, wie ich es am besten anstelle, dass er mir mit dem Script alle pdf´s die sich in dem jeweiligen Ordner befinden in bmp etc. umwandelt? Leider besitze ich keine guten Kenntnisse in sachen Batch. Bin für jede Hilfe dankbar.


gruß

Ulle

Content-ID: 69877

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

Ausgedruckt am: 22.11.2024 um 16:11 Uhr

talkinghands
talkinghands 01.10.2007 um 11:52:00 Uhr
Goto Top
Hi,
ich hatte die Tage ein ähnlich gelagertes Problem und habe es mit VBScript gelöst.
Nur musste ich hier XML Dateien nach PDF konvertieren


Dim fso, WSHShell
Pfad = "H:\GEPACH\D2D\DATA\1999854101\280920070021\"
Set WSHShell = WScript.CreateObject("WScript.Shell")
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder(Pfad)
Set fs = f.Files
Params1 = " -i "
Params2 = " -o "
For each fl in fs
Datei = Pfad&fl.name
If UCase(Right(Datei,3))="XML" Then
WSHShell.Run "daleuv2pdf.exe "& Params1 & Datei & Params2 & Pfad,0,True
End If
Next


vielleicht hilft's ja

ciao
TH
miniversum
miniversum 01.10.2007 um 13:41:39 Uhr
Goto Top
Wenn du bei Batch bleiben wilslt kansn tdu auch einfach folgende Änderungen machen:
@echo off
set Verzeichnis="C:\pdfs\" & REM Verzeichniss indem sich die PDFs befinden. Wird "" angegeben wird das aktuelle Verzeichnis genommen inder die Batch liegt  

echo -I"C:\Programme\gs\gs8.53\bin\;C:\Programme\gs\fonts" >>_.cmd  
echo -sDEVICE=bmp256 >>_.cmd
echo -r100x100 >>_.cmd
echo -dNOPAUSE >>_.cmd
echo -sOutputFile=%1%%d.bmp >>_.cmd

FOR /F "delims=" %%f in ('dir /B /A-D %verzeichnis%*.pdf') do gswin32.exe @_.cmd "%%f" -c quit  
rem del _.cmd

miniversum
bastla
bastla 02.10.2007 um 08:30:56 Uhr
Goto Top
Hallo Ulle123!

Eine andere Batch-Variante (allerdings ungetestet, daher am besten mit einem Test-Verzeichnis mit nur 2 oder 3 Dateien versuchen):
@echo off
set "Verzeichnis=%~1\"  
if "%~1"=="" set Verzeichnis=  
for %%f in ("%Verzeichnis%*.pdf") do (  
	echo -I"C:\Programme\gs\gs8.53\bin\;C:\Programme\gs\fonts" >_.cmd  
	echo -sDEVICE=bmp256 >>_.cmd
	echo -r100x100 >>_.cmd
	echo -dNOPAUSE >>_.cmd
	echo -sOutputFile="%%~dpnf.bmp" >>_.cmd  
	gswin32.exe @_.cmd "%%f" -c quit  
)
del _.cmd
Beim Aufruf kann ein Verzeichnis übergeben werden, ansonsten wird die Konvertierung für das aktuelle Verzeichnis vorgenommen.
Mangels näherer Kenntnis von Ghostscript (und besonders der Commandline-Argumente) kann ich nicht abschätzen, ob die folgende weitere, von oben abgeleitete, Version (diesmal ohne Parameterfile) tatsächlich so funktionieren kann:
@echo off
set "Verzeichnis=%~1\"  
if "%~1"=="" set Verzeichnis=  
for %%f in ("%Verzeichnis%*.pdf") do gswin32.exe -I"C:\Programme\gs\gs8.53\bin\;C:\Programme\gs\fonts" -sDEVICE=bmp256 -r100x100 -dNOPAUSE -sOutputFile="%%~dpnf.bmp" "%%f" -c quit  

Grüße
bastla
Ulle123
Ulle123 05.10.2007 um 14:18:50 Uhr
Goto Top
Erst mal vielen Dank an euch für die Hilfe die ich hier bekommen habe.

@talkinghands wenn ich es in Vb versucht hätte umzusetzen, wäre dies bestimmt ne gute Möglichkeit. Dank dir.


@miniversum

das script konvertiert mir zwar Pdfs nur leider muckt Ghostscript mit Fehlermeldungen die ich nicht deuten kann rum. Beende ich diese, macht er zwar anstandslos weiter, jedoch werden alle erzeugen Files überschrieben.

@bastla

Beide Scripts funktionieren wunderbar, dass einzige was ich noch ergänzen musste, war bei –sOutputFile %%d (–sOutputFile=“%%~dpnf%%d.bmp“) für laufende Nummer. Sonst habe ich das Problem, dass wenn eine Pdf mehre Seiten hat nur die erste konvertiert wird.


Also dann danke noch mal und allen ein angenehmes We


Gruß

ulle