🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

PDF-Formular mit Libreoffice füllen

Alles zur Programmierung im LibreOffice.
Antworten
xundeenergie
Beiträge: 32
Registriert: Do 20. Jun 2013, 17:46

PDF-Formular mit Libreoffice füllen

Beitrag von xundeenergie » Mo 31. Mär 2014, 10:48

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
Dateianhänge
Angebotsschein, wie er mit LO geöffnet ausschaut
Angebotsschein, wie er mit LO geöffnet ausschaut
Angebotsschein-anonym.png (165.02 KiB) 1734 mal betrachtet
Angebotsschein, wie er ausschauen sollte
Angebotsschein, wie er ausschauen sollte
Angebot-WNAngebotsNr-Firmenname.png (197.1 KiB) 1734 mal betrachtet
LibreOffice
Version: 4.1.4.2 Build-ID: 410m0(Build:2) auf Debian Wheezy mit Backports


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten