[GELÖST] - Bericht als PDF per Mail - WIE?

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

[GELÖST] - Bericht als PDF per Mail - WIE?

Beitrag von geimist »

Hallo,
ich habe schon einiges zu meinem Problem gesucht, aber noch nicht wirklich etwas aktuelles gefunden.

Die Aufgabe ist folgende:
Ich möchte einen Bericht aus einer DB (möglichst "hidden") laden, und ihn automatisch an eine Liste von eMail-Empfängern senden.

Zur 1. Aufgabe:
Der folgende Code soll schon mal den Bericht laden, sowie ihn per PDF an eMailprogramm weiterleiten. Derzeit passiert aber noch garnichts. Vermutlich übergebe ich den Bericht noch nicht richtig an "uno:SendMailDocAsPDF" (oBerichtDoc = ThisComponent.CurrentController.Frame wenn ich es aus einem Writer-Dokument öffne, funktioniert)

Code: Alles auswählen

'========= Bericht erhalten:
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
oDatenquelle = DatabaseContext.getByName ("DBname")
oDoc = oDatenquelle.DatabaseDocument
oBericht = oDoc.getReportDocuments().getByName("Berichtname")
oBerichtDoc = oBericht.getComponent() 

'========= PDF-Mail von 2007: http://www.oooforum.de/viewtopic.php?f=18&t=10721&p=42086&hilit=mail+pdf&sid=e5314f383c84ae264e563ff3bf84cfd1#p42086
dim document   as object
dim dispatcher as object
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(oBerichtDoc, ".uno:SendMailDocAsPDF", "", 0, Array())
Habt ihr einen Tipp?
Zuletzt geändert von geimist am Sa, 26.09.2009 12:06, insgesamt 2-mal geändert.
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Re: Bericht als PDF per Mail - WIE?

Beitrag von geimist »

Auf der Fehlersuche habe ich mein Makro immer mehr minimiert und festgestellt, dass ich gar keine eMail mit Anhang versenden kann.
Wenn ich diese Zeile aktiviere "NeueNachricht.setAttachement(vAttachement())" kommt dann immer der Fehler: com.sun.star.uno.Exception / Message: Send email failed.
Nehme ich die Zeile heraus, so kann ich zumindest eine leere Mail versenden.
Bei dem, was ich jetzt überall gefunden habe, ist die Schreibweise überall so, wie ich es auch verwende :?

Code: Alles auswählen

oMailer = createUnoService("com.sun.star.system.SimpleSystemMail")
MailProgramm = oMailer.querySimpleMailClient()
NeueNachricht = MailProgramm.createSimpleMailMessage()

Dim vAttachement(0)
vAttachement(0) = "file:///C:/Users/B/Desktop/PDF-Mail.odt"
NeueNachricht.setAttachement(vAttachement())

NeueNachricht.setRecipient("xxxxx@gmx.de")
NeueNachricht.setSubject( "test" )
Mailprogramm.sendSimpleMailMessage(Neuenachricht, 1 )
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Re: [UNGELÖST] - Bericht als PDF per Mail - WIE?

Beitrag von geimist »

Also: Vielen Dank erst einmal für die Antworten.

Ein Problem habe ich identifizieren können. Es liegt wohl an Windows Mail, dem man keine Anlagen übergeben kann. Ich habe jetzt parallel einmal Thunderbird installiert, und siehe da - es geht. Allerdings möchte ich Thunderbird nicht als Standardmailer verwenden, weshalb ich über den Shellbefehl die Mails an Thunderbird übergeben werde.

D.h. aber auch, dass ich den Umweg (wie von - ich glaube komma4 - in einem anderen Beitrag gezeigt) nehmen werde, in dem ich den Bericht erst als PDF ins TMP-Verzeichnis speichere und diese Datei anschließend versende. Dabei würde ich aber nocheinmal eure Hilfe benötigen, da es beim PDF-speichern zu einer Fehlermeldung kommt.

So versuche ich das PDF zu speichern:

Code: Alles auswählen


'========= Temp-Pfad auslesen:
oPfad = CreateUnoService("com.sun.star.util.PathSettings")
tmpURL = convertFromURL(oPfad.temp)
tmpURL = tmpURL & "/Datenbank_Mailer/Treffpunkte.pdf"

'========= Bericht öffnen:
       Dim Context AS Object
       Dim Conn As Object
       Dim DB As Object
       Dim ReportDoc As Object
       Dim Args(2) As New com.sun.star.beans.PropertyValue
       Dim ReportName As String
       
       ReportName = "Treffpunktplan/Treffpunkte_SerienMail"
       Context=CreateUnoService("com.sun.star.sdb.DatabaseContext")
       DB=Context.getByName("DBname")
       Conn=DB.getconnection("","")
       Args(0).Name="ActiveConnection" : Args(0).Value=Conn
       Args(1).Name="OpenMode" : Args(1).Value="open"
       Args(2).Name="Hidden"
       Args(2).Value=true
       ReportDoc=DB.DatabaseDocument.ReportDocuments.loadComponentFromURL(ReportName,"_self",2,Args)
      
'========= Bericht als PDF unter TMP speichern:

DIM dokument AS OBJECT
dokument = ReportDoc

DIM filter AS STRING

IF dokument.supportsService( "com.sun.star.text.TextDocument" ) THEN
  filter = "writer_pdf_Export"
ELSEIF dokument.supportsService( "com.sun.star.sheet.SpreadsheetDocument" ) THEN
  filter = "calc_pdf_Export"
ELSEIF dokument.supportsService( "com.sun.star.presentation.PresentationDocument" ) THEN
  filter = "impress_pdf_Export"
ELSEIF dokument.supportsService( "com.sun.star.draw.DrawDocument" ) THEN
  filter = "draw_pdf_Export"
Else
  MsgBox "Dokument-Typ unbehandelt."
  Exit Sub
End If

DIM Eigenschaften( 1 ) AS New com.sun.star.beans.PropertyValue

Eigenschaften( 0 ).Name = "FilterName"
Eigenschaften( 0 ).Value = filter

Eigenschaften( 1 ).Name = "CompressMode"
Eigenschaften( 1 ).Value = 0

dokument.storeToUrl( tmpURL, Eigenschaften( ) ) 
Wenn ich mir den "filter" in einer msgbox anzeigen lasse, so steht korrekt "writer_pdf_Export".

In der letzten Zeile kommt es aber zu folgenden Fehler:
"Type: com.sun.star.task.ErrorCodeIOException
Message: ."

????
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Re: [GELÖST] - Bericht als PDF per Mail - WIE?

Beitrag von geimist »

Ich habe den Fehler gefunden. In der Pfadangabe hatte ich einen falschen Trenner eingesetzt.

Jetzt geht es. :D
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
Antworten