[Risolto] Esportazione pdf e campo data

Creare una macro - Scrivere uno script - Usare le API
Rispondi
c.spaziani
Messaggi: 21
Iscritto il: lunedì 16 gennaio 2012, 12:48

[Risolto] Esportazione pdf e campo data

Messaggio da c.spaziani »

Salve,
mi accade una cosa strana: in un modello writer è presente un controllo campo data che viene aggiornato all'apertura in questo modo:

Codice: Seleziona tutto

Sub DataOggi
Dim oDoc
Dim oData
Dim oDataCtrl
	oDoc = ThisComponent
	oData = oDoc.DrawPage.Forms.GetByIndex(0).getByName("CampoData")
	oDataCtrl = oDoc.CurrentController.getControl(oData)
	oDataCtrl.setDate(CDateToIso(Date()))
End Sub
Il campo sia a video che in stampa riporta la data corretta, mentre se esporto in pdf, il campo non tiene conto delle modifiche effettuate via macro.
Si tratta di un bug?
Ultima modifica di c.spaziani il martedì 20 marzo 2012, 18:13, modificato 1 volta in totale.
OpenOffice 3.4.1
LibreOffice 3.6.1.2
Microsoft Windows 7 (6.1) x64 Ultimate Edition Service Pack 1 (Build 7601)
Avatar utente
Mizio1961
Volontario
Volontario
Messaggi: 841
Iscritto il: mercoledì 5 ottobre 2011, 22:55
Località: Roma

Re: Esportazione pdf e campo data

Messaggio da Mizio1961 »

Ciao. Per verificare se è un bug puoi allegare il file così lo si prova su altri sistemi?
OpenOffice Windows - Libre su Ubuntu Desktop e Notebook WiFi
Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto. ;-)
c.spaziani
Messaggi: 21
Iscritto il: lunedì 16 gennaio 2012, 12:48

Re: Esportazione pdf e campo data

Messaggio da c.spaziani »

Su Windows, per replicare l'errore utilizzare il seguente documento:
CampoDataWin.odt
(9.39 KiB) Scaricato 286 volte
che contiene all'interno solamente un campo data impostato sulla data 01/01/12.

Se si esegue la macro

Codice: Seleziona tutto

Sub DataOggi
Dim oDoc
Dim oData
Dim oDataCtrl
   oDoc = ThisComponent
   oData = oDoc.DrawPage.Forms.GetByIndex(0).getByName("CampoData")
   oDataCtrl = oDoc.CurrentController.getControl(oData)
   oDataCtrl.setDate(CDateToIso(Date()))
End Sub
il campo viene aggiornato con la data odierna.
Il problema si presenta esportando il file in pdf, infatti la data riamane quella iniziale.
Cambiando la data a mano questo non succede.

Su Linux, Ubuntu 11.10 con LibreOffice 3.5.0 350m1(Build:13), il file precedente stranamente dà errore e non viene nemmeno letto!
Ho creato un file identico partendo da linux:
CampoDataLinux.odt
(9.41 KiB) Scaricato 206 volte
Risultato: non riesco ad accedere al campo data da macro.
Se provo ad aprire il file creato su linux da windows, stavolta il file si apre, il campo data è presente ma non è visibile (si può selezionare in modalità bozza, ma le proprietà non sono accesibili) e riscontro lo stesso problema ad accedervi via macro (insomma è inutilizzabile!!).
Che ne pensate?
OpenOffice 3.4.1
LibreOffice 3.6.1.2
Microsoft Windows 7 (6.1) x64 Ultimate Edition Service Pack 1 (Build 7601)
Avatar utente
Mizio1961
Volontario
Volontario
Messaggi: 841
Iscritto il: mercoledì 5 ottobre 2011, 22:55
Località: Roma

Re: Esportazione pdf e campo data

Messaggio da Mizio1961 »

Ho fatto alcune prove con le opzioni di esportazione.
Nel mio caso il risultato è stato che impostando come formato di esportazione il tipo PDF/A-1a nella scheda Generale del dialog delle opzioni, il file si porta la data impostata tramite macro (ad es per oggi 20/03/12).
Guardando un pò di cosa tratta questo parametro mi sembra di capire che il comportamento sia corretto così in quanto anche in PDF posso fare delle automazioni.
Forse gli altri formati (soprattutto quello Crea formulario PDF) leggono il campo come programmabile, quindi lo lasciano sull'impostazione di base in modo da consentirne la riprogrammazione in PDF.
By Mizio
OpenOffice Windows - Libre su Ubuntu Desktop e Notebook WiFi
Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto. ;-)
c.spaziani
Messaggi: 21
Iscritto il: lunedì 16 gennaio 2012, 12:48

Re: Esportazione pdf e campo data

Messaggio da c.spaziani »

Hai ragione, salvando nel formato PDF/A-1a il problema non si presenta!
Ho riscritto la macro per salvare in pdf e inviare per email (che è quello che alla fine mi serviva) utilizzando il formato PDF/A-1a...

Codice: Seleziona tutto

Sub ConvertToPDFandSend
Dim FileProperties(1) As New com.sun.star.beans.PropertyValue
	BasicLibraries.LoadLibrary("Tools")
	oDoc = ThisComponent
	sFilePDF = GetPathSettings("Temp") + "/SenzaNome.pdf"
	If oDoc.hasLocation Then
		sFilePDF = GetPathSettings("Temp") + "/" + GetFileNameWithoutExtension(FileNameoutofPath(oDoc.getURL)) + ".pdf"
	End If
	FileProperties(0).Name = "FilterName"
	FileProperties(0).Value = "writer_pdf_Export"
	FileProperties(1).Name = "SelectPdfVersion"
	FileProperties(1).Value = 1 'PDF/A-1a
	oDoc.storeToURL(sFilePDF, FileProperties())
	eMailer = createUnoService("com.sun.star.system.SimpleSystemMail")
	eMailClient = eMailer.querySimpleMailClient()
	eMessage = eMailClient.createSimpleMailMessage()
	eMessage.setAttachement(Array(sFilePDF))
	eMailClient.sendSimpleMailMessage(eMessage, 0)
	Kill(sFilePDF)
End Sub
...quindi posso dire di aver raggiunto il mio scopo senza dover rimettere mano a una cinquantina di modelli! :super:

Per quanto riguarda l'utilizzo dei campi data rimangono i problemi di compatibilità tra windows e linux e altri problemi legati alla gestione degli eventi che ho segnalato tempo fa sulla ML dev-it, ma per il momento va bene così... Grazie!
OpenOffice 3.4.1
LibreOffice 3.6.1.2
Microsoft Windows 7 (6.1) x64 Ultimate Edition Service Pack 1 (Build 7601)
Avatar utente
Mizio1961
Volontario
Volontario
Messaggi: 841
Iscritto il: mercoledì 5 ottobre 2011, 22:55
Località: Roma

Re: [Risolto] Esportazione pdf e campo data

Messaggio da Mizio1961 »

Prego
Fa sempre piacere riuscire ad essere di aiuto
Saluti e 'buon divertimento' ;)
OpenOffice Windows - Libre su Ubuntu Desktop e Notebook WiFi
Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto. ;-)
Rispondi