Seite 1 von 1

PDF-Formular mit Libreoffice füllen

Verfasst: Mo 31. Mär 2014, 10:48
von xundeenergie
Hi!

Ich hab an anderer Stelle in diesem Forum schon nachgefragt, aber bin nicht wirklich schlauer geworden.

Aktueller Stand der Makroprogrammierung:

Ich habe ein Array befüllt mir Wertepaaren "Formularfeldbezeichnung -> Value".

Derzeit erzeuge ich mir mittels

Code: Alles auswählen

	sFDF = "%FDF-1.2 " & Chr(13) & _
		"" & Chr(13) & _
		"1 0 obj" & Chr(13) & _
		"<<" & Chr(13) & _
		"/Version /1.3 " & Chr(13) & _
		"/Encoding /utf8 " & Chr(13) & _
		"/FDF " & Chr(13) & _
		"<<" & Chr(13) & _
		"/Fields [" & Chr(13) 
		
		i = 0
		do while oFields(i, 0) <> ""
			if oFields(i, 3) <> "" then
				sFDF = sFDF & "<<" & chr(13) &  "/V(" & oFields(i, 4) & ")" & chr(13)
				sFDF = sFDF & "/T(" & oFields(i, 3) & ")" & chr(13) & ">>" & chr(13)
			end if
			i = i + 1
		loop
		
		i = 0
		do while oFieldsProj(i, 0) <> ""
			if oFieldsProj(i, 2) <> "" then
				sFDF = sFDF & "<<" & chr(13) &  "/V(" & oFieldsProj(i, 1) & ")" & chr(13)
				sFDF = sFDF & "/T(" & oFieldsProj(i, 2) & ")" & chr(13) & ">>" & chr(13)
			end if
			i = i + 1
		loop
		sFDF = sFDF & _
		">>] " & Chr(13) & _
		">> " & Chr(13) & _
		"/F (Angebotsschein.pdf)>>" & Chr(13) & _
		">>" & Chr(13) & _
		"endobj " & Chr(13) & _
		"trailer " & Chr(13) & _
		"<<" & Chr(13) & _
		"/Root 1 0 R" & Chr(13) & _
		">>" & Chr(13) & _
		"%%EOF" 

	sAngebot = sPath & GetPathSeparator & "Angebote/Angebot-" & sAngebotsNr & "-" & sFirmenname & ".pdf"
	sAngebotUrl = converttourl(sAngebot) 
	
	i = FreeFile()
	Open sPath & "/tmp.fdf" For Output As i
	Print #i, sFDF
	Close #i
	
	sConv = sPICONV & " -f utf-8 -t latin1 "  & sPath & "/tmp.fdf -o  "  & sPath & "/tmp1.fdf"
	Shell (sConv,1)
	
REM - Erstellen des Angebot-PDFs
	sPdfTk = sPPDFTK & " " & sPath & "/Angebotsschein.pdf fill_form "  & sPath & _
	"/tmp1.fdf output '" & sPath & "/Angebote/Angebot-" & sAngebotsNr & "-" & sFirmenname & ".pdf' flatten"
	
	Shell (sPdfTk,1)
Das funktioniert auch wunderbar. Ich muss leider den Umweg über iconv gehen, dass pdftk Probleme mit der Codierung UTF8 macht und nur UTF16 akzeptiert.

Ich kann später im Makro bei der Erstellung des Mails auf das entsprechende Angebot zugreifen und mir so mit den anderen Informationen mein Mail zusammenbauen, welches ich dann per Thunderbird/Icedove versende.

ABER!!!

Diese Lösung funktioniert auf Linux, und mit mir am Rechner als Admin. Ich möchte das gerne im Büro an andere Kollegen auch weitergeben, welche verschiedene Windows-Versionen und auch Mac OSX 10.5.8 und höher im Einsatz haben. Es gibt keine einheitliche OS-Richtlinie.

Gibt es eine Lösung, die rein mit Libreoffice ein PDF-Formular befüllen kann, sodass ich mir die beiden Shell-Aufrufe sparen kann?
Das Problem dabei ist, das PDF-Formular ändert sich von Auftrag zu Auftrag, und es wird, wenn ich es in LO öffne nicht korrekt dargestellt. Die Formatierung leidet, es sind die Felder an anderen Stellen und auch sonst sind einige Teile des Formulares verschoben...


Ich habe zwei Bilder angehängt. Eines, wie der Angebotsschein mit pdftk ausgefültt ausschaut (und ausschauen sollte), und eines, wie er ausschaut, wenn das PDF-Formular mit LO geöffnet und abgespeichert wurde.

Ideen?

lg xundeenergie