c.mamojka
Goto Top

Konvertierung ganzer Ordnerstruktur in PDF (Word-Dateien)

Hallo Zusammen,

ich benötige eine Anwendung die in der Lage ist Dateien (Word) einer gesamten Ordnerstruktur in PDFs zu wandeln. Wichtig wäre dass am Ende die Ordnerstruktur erhalten bleibt. Das Ganze sollte auf einem Terminal Server 2008 R2 lauffähig sein.

FreePDF wurde u.a. getestet und würde grundsätzlich funktionieren. Problem ist aber, dass der "FreePDF Assistant" laufen muss und dieser sich auf einem Terminal Server nicht automatisch bei Anmeldung des Benutzers startet.


Mit zwei Lösungen wäre ich zufrieden.
1. Empfehlung eines Tools welches möglichst kostenfrei aber wenigstens "günstig" ist
2. Einen Tipp wie ich den "FreePDF Assitant" in jeder Benutzersession automatisch zum laufen bringe.


Herzlichen Dank face-smile

Content-Key: 271357

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

Printed on: April 19, 2024 at 19:04 o'clock

Mitglied: 114757
114757 May 07, 2015 updated at 10:49:38 (UTC)
Goto Top
Moin,
z.B. mit einem VBS (installiertes Word vorausgesetzt)
'Pfad zu den Dokumenten  
Const strPathDocs = "C:\Ordner\Daten"  
'Logfile für eventuell auftretende Fehler  
Const strPathLogfile = "c:\Ordner\Daten\logfile.txt"  
'Erweiterungen der Dateien die bearbeitet werden sollen  
arrFileExtensions = Array("doc","docx","docm")  
' -------------------------------------------------  
Set fso = CreateObject("Scripting.Filesystemobject")  
Set objWord = CreateObject("Word.Application")  
Set objShell = CreateObject("Wscript.Shell")  
Dim intDocCount, intErrCount
'Applikation anzeigen und eventuelle Dialoge für Batchbetrieb unterdrücken  
objWord.Visible = True
objWord.DisplayAlerts = 0
'Im Ordner Rekursiv alle Word-Dokumente verarbeiten  
parseFolders fso.GetFolder(strPathDocs), True
'Das Anzeigen von Benachrichtigungen wieder aktivieren und Word schließen  
objWord.DisplayAlerts = -1
objWord.Quit True
Set fso = Nothing
Set objWord = Nothing
If intErrCount = 0 Then
	MsgBox "Es wurden insgesamt " & intDocCount & " Dokumente verarbeitet.", vbInformation, "Verarbeitung abgeschlossen"  
Else
	MsgBox "Es wurden insgesamt " & intDocCount & " Dokumente verarbeitet." & vbCrLf & "Davon ist bei " & intErrCount & " Dokumenten ein Fehler aufgetreten!", vbInformation, "Verarbeitung abgeschlossen"  
	objShell.Run "Notepad.exe " & strPathLogfile  
End If

'Ende  

Function parseFolders(fldr, boolRecursion)
    For Each file In fldr.Files
    	For i = 0 To UBound(arrFileExtensions)
			If LCase(arrFileExtensions(i)) = LCase(fso.GetExtensionName(file.Path)) Then
				intDocCount = intDocCount + 1 
	            'Fehlerbehandlung für den Fall das ein Fehler beim Öffnen eines Dokumentes auftritt  
	            On Error Resume Next
	            Set objDoc = objWord.Documents.Open(file.Path)
	            If Err.Number <> 0 Then
	            	intErrCount = intErrCount + 1
	            	WriteLog "!!ERROR!! Fehler beim öffnen der Datei: -> '" & file.Path & "'"  
	            Else
	            	'----- Dokument als PDF speichern -----------  
	            	strPathPDF = file.ParentFolder & "\" & fso.GetBasename(file.Path) & ".pdf"  
	            	objDoc.SaveAs strPathPDF,17
	            	objDoc.Close
	            	WriteLog "Dokument wurde zu PDF konvertiert: ->'" & file.Path & "' --> '" & strPathPDF & "'"  
	            End if
	            Exit For
	         End If
		Next
    Next
    
    'Funktion wird rekursiv aufrufen wenn das durchsuchen aller Unterordner gewünscht ist  
    If boolRecursion Then
		For Each subFolder in fldr.SubFolders
			parseFolders subFolder, True
		Next
	End If
End Function

Function WriteLog(strText)
	Set objLog = fso.OpenTextFile(strPathLogfile,8,True)
	logline = Now & " - " & strText  
	objLog.WriteLine(logline)
	objLog.Close
End Function
Gruß jodel32
Member: c.mamojka
c.mamojka May 08, 2015 at 13:37:08 (UTC)
Goto Top
HI, vielen Dank für die Infos!
Haben es jetzt aber mit "File2PDF" und "FreePDF" gelöst bekomme.

Grüße
Member: starcook
starcook Jun 19, 2015 at 10:47:26 (UTC)
Goto Top
Hallo Zusammen, hallo Jodel,

Ich suche mir schon seit Tagen einen Wolf nach einer Lösung vielen vorhandene Worddateien in pdf zu konvertieren. Zufällig bin ich nun auf diesen Beitrag gestossen und hoffe von euch Unterstützung erhalten zu können.

Es sind vielen (mehrere tauschend) Worddokumente (unterschiedliche Word-Versionen) in verschiedenen Ordnern mit Unterordnern die in PDF konvertiert werden sollen. Die Problematik besteht nun darin, das in vielen, jedoch nicht allen Dokumente, ein Datumfeld mit der Funktion "Date" enthalten ist. Diese Funktion bewirkt, das nicht nur beim Öffnen sondern auch schon beim Drucken nach PDF24 oder konvertieren mit PDF-Creator das aktuelle Datum im PDF-Dokument, aber auch dann im Word-Dokument hinterlegt wird (Ich gehe davon aus das dies auch bei anderen PDF-Konvertern so sein wird). Dies soll jedoch nicht passieren!!!

Mein Lösungsansatz wäre nun ein Programm/VBS ähnlich der Lösung von Jodel, jedoch mit der Änderung der Feldfunktion von "Date" nach "Printdate". Sobald dann aus den so angepassten Word-Dokumenten die PDF-Dateien erststellt sind, wird nurnoch mit den PDF's gearbeitet und die anderen Word-Dateien mit schreibschutz versehen gesichert.

Leider fehlen mir selbst die Basics im Programmieren um die Aufgabe zu lösen, weshalb ich hoffe das ich hier die benötigte Unterstützung erhalte.

Vielen dank im Voraus !!!

starcook
Mitglied: 114757
114757 Jun 19, 2015 updated at 11:11:59 (UTC)
Goto Top
Moin starkoch,
Zeile 43 folgendes einfügen
For Each f In objDoc.Fields
    If InStr(1, f.Code.Text, "DATE", 1) > 0 And InStr(1, f.Code.Text, "PRINTDATE", 1) = 0 Then  
        f.Code.Text = Replace(f.Code.Text, "DATE", "PRINTDATE", 1, 1, 1)  
        f.Update
    End If
Next
feddich. Mehr Support gibt's von mir nur gegen Cash.

Gruß jodel32
Member: starcook
starcook Jun 19, 2015 at 12:29:15 (UTC)
Goto Top
Hallo Jodel,

vielen Dank für die Hilfe. Ich schau mal wie ich damit klar komme und meld mich wieder.

beste Grüße
starcook
Member: starcook
starcook Jul 06, 2015 at 08:49:55 (UTC)
Goto Top
Hallo Jodel,

bin nun endlich dazu gekommen an der Sache weiter zu arbeiten. So langsam steige ich durch. Allerdings bekomme ich einen Laufzeitfehler 424 in Zeile 34 den ich nicht interpretiert bekomme und was bedeutet die 17 in Zeiler 45 ?

Wäre nett wenn du mir da was Licht ins Dunkel bringen könntest.

Danke im Voraus !!!

beste Grüße

starcook