Domino 9 und frühere Versionen > ND7: Entwicklung

Bilder exportieren, DXLExporter Fehler "Operation failed"

<< < (2/3) > >>

Wieczorrek:
Hallo Thomas,

Deine Vermutung ist natürlich richtig, es handelt sich um @Command( [FileExport] ).

Die Idee mit dem PostOpen werde ich versuchen.

Obwohl ich schon sagen muß, nur um ein Bild zu speichern ist der Weg über den Exporter und ausschnibbeln und decodieren usw schon so was von Hinten durch die Brust ins Auge, das mir für diese Möglichkeit kein Kommentar mehr einfällt.

Ich werde das Ergebnis mitteilen.

Gruß

Carsten

jtuemmer:
Hallo Carsten, mit welchen Einstellungen verwendest Du denn den DXLExporter? Weisst Du an welcher Stelle der Fehler auftritt? Beim Export, beim Ausschneiden oder beim Decodieren?

Jochen

Wieczorrek:
Guten Morgen Jochen,

ich habe alle Einstellungen durchprobiert, hat leider keinen Einfluss auf den Fehler.


DIM exportstring as string
exportstring = exporter.export(Dokument)

Der Fehler erfolgt unmittelbar nach der zweiten Zeile. Error$ liefert nur "operation failed" und der exporter.log "invalid parameter".

Ich habe mittlerweile dass Gefühl, das der Fehler bei allen Dokumenten auftritt, in die mittels STRG+V ein CorelDraw Bild eingefügt wurde. DIB sollte zwar gleich DIB sein, aber irgend etwas ist ja wohl anders an diesen Dokumenten.

Gruß

Carsten

Wieczorrek:
Für alle, die es interessiert, hier die oder eine Lösung des Problems:

1. In eine Form- oder Subform der Dokumente mit den Bildern in das PostOpen Ereignis folgende Formel setzen:

@Command[(FileExport]; "Microsoft RTF"; "gewünschter dateipfad\dateiname.rtf");
@Command([RunAgent]; "(closewindow)")


2. Einen (2.) Agenten (closewindow) erstellen mit folgendem Inhalt:

Dim ws as NotesUIWorkspace
Dim ud as NotesUIDocument
Sub initialize
   Set ws = New NotesUIWorkspace
   Set ud = ws.currentdocument
   if Not ud Is Nothing then ud.close
End Sub


3. In dem eigentlichen Arbeitsagenten steht dann in etwa

Dim ws as New NotesUIWorkspace
Sub BilderExportieren
  On Error Goto Fehler   ' ganz wichtig!
  Set Doks = Datenbank.AllDocuments
  For Z = 1 to Doks.Count
    Set Dok = Doks.GetNthDocument(z)
    ExportText = XMLExporter.Export(Dok)
    ab hier Code zum ausschnippeln der Bilder aus der XML Datei
    und Decodieren + Speichern der Bilder
  Next
  Exit Sub

Fehler:
  ws.EditDocument(True, Dok)
  Resume Next
End Sub

So, was passiert ist folgendes: Der Arbeitsagent geht über alle Dokumente und schiebt sie in den Exporter. Wenn alles OK ist, wird eine XML-Datei erstellt. Wenn der Exporter die Grätsche macht, wird im On Error - Teil das fehlerverursachende Dokument geöffnet.
Im PostOpen-Event erstellt das defekte Dokument selber eine RTF-Datei. Leider mag es das Dokument nicht, im PostOpen ein CloseWindow zu finden (wird ignoriert), auch kann der aufrufende Agent nicht das zugehörige UIDocument erreichen. Also öffnet das PostOpen den zweiten Agenten, welcher dann das Dokument schließt.
Das ist aber nur Theorie. In der Praxis macht Notes nach etwa 250 Dokumenten komplett die Grätsche (rotes Fenster oder irgendwo im Datennirvana, hilft nur neu Booten, diese Schleife gibt dem GarbageCollector wohl keine große Chance). Also in einer LOG-Datei bei jedem Durchgang die Variable Z abspeichern und beim nächsten Start von Notes nicht bei 0 sondern bei z+1 beginnen. So bekommt man von allen nicht XML-Exportierten Dokumenten ein RTF.

Leider sind die Bilddaten im RTF nicht Base64 codiert. Also hier noch ein wenig vb.net code, um an die Bilder zu gelangen

Dim Bild As Image
Dim wApp as Word.Application
Dim wDok as Word.Dokument
Dim Dateien() as String
Dateien = Directory.GetFiles(RTF-Pfad)
wApp = New Word.Dokument
For Z = 0 To Dateien.GetUpperBound(0)
  wApp.Documents.Open(CObj(Dateien(Z)))
  wDoc = wApp.Documents(1)
  For I = 1 To wDoc.Sections.Count
     For J = 1 To wDoc.Sections(I).Range.InlineShapes.Count
         wDoc.Sections(I).Range.InlineShapes(J).Range.CopyAsPicture
         Bild = Clipboard.GetImage
         Bild.Save(gewünschter Bildpfad)
     Next
  Next
  wDoc.Close
Next
wApp.Quit

Verdammt viel Aufwand, um Bilder aus Notes zu exportieren, aber ich habe jetzt alle.

Gruß

Carsten Wieczorrek

Wieczorrek:
Tschuldigung, Zeile 6 des .net Codes lautet natürlich

wApp = New Word.Application

Gruß

Carsten

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln