Autor Thema: Bilder exportieren, DXLExporter Fehler "Operation failed"  (Gelesen 3649 mal)

Offline Wieczorrek

  • Frischling
  • *
  • Beiträge: 6
Guten Morgen,

ich habe zu meinem Problem schon viel gelesen, aber noch nichts sinnvolles gefunden, vielleicht weiss hier jemand etwas.

Ich habe ein Datenbank, die wurde ursprünglich bereits 1999, also unter 4.6 erstellt. In den meisten Dokumenten gibt es ein (oder mehrere) Bild(er). Diese Bilder wurden in der Regel als jpg oder gif über den "Import" Befehl eingefügt. Es gibt aber auch Bilder, die per cut/paste mit STRG+V eingefügt wurden. Ich muss diese Bilder unter dem Dateinamen url_1.jpg oder .gif auf Platte bannen. Aktuell verwende ich die Version 7.01.

Da Notes meines Wissens nach immer noch keine Funktionen zum Bearbeiten eingebetteter Bilder bietet, gehe ich folgenden Weg:

Schleife über alle Dokumente, jedes Dokument durch den Exporter nudeln und im XML Code die Bilder ausschnipseln (und dann decodieren). Das geht auch ganz gut. Jedenfalls mit 70% meiner Dokumente. Bei den restlichen 30% macht der Exporter aber die Grätsche mit der wenig hilfreichen Fehlermeldung "Operation failed".

Wenn ich die LOG Meldung auslese, kann ich noch eine halbe NOTES-ID auslesen und bekomme den Hinweis "Invalid parameter".

Wenn ich über die NOTES-ID das problemverursachende Dokument ganz, ganz genau ansehe, dann stelle ich nichts ungewöhnliches fest. Es läßt sich öffnen, schließen, verändern, löschen usw. Nur eben nicht DXL-exportieren.

Kennt jemand eine Lösung?
Oder alternativ: Kann ich aus Lotus-Script die Formelsprache aufrufen? Warum? In der Formelsprache gibt es einen Befehl (sinngemäß) Document.ExportAsRTF. Aus dieser RTF-Datei kann ich auch Bilder ausschnipseln. Leider kennt Lotus-Script diese Funktion nicht.

Gruß

Carsten Wieczorrek


Offline Lotuseffekt

  • Frischling
  • *
  • Beiträge: 34
  • Geschlecht: Männlich
Re: Bilder exportieren, DXLExporter Fehler "Operation failed"
« Antwort #1 am: 07.08.06 - 10:35:16 »
Hallo Carsten,

Du kannst aus Lotusscript Formelsprache aufrufen. Stichwort ist 'Evaluate'. Schau Dir noch einmal in der Hilfe ganuer an...
Der Syntax dazu lautet:
variant = notesSession.Evaluate( formula$, doc )

Bsp:
Dim.... as...
....
formel = {_values := eintraege; @If(_values != ""; @Sort(@Trim(@Left(_values; "§") + " (") + @ReplaceSubstring(@Right(_values; "$");  "!!" : "&&"; "%") + ")"); "")}
Call doc.ReplaceItemValue("dsp_source", Evaluate(formel, doc))

Ob Dir das Deinem Problem mit DXL weiter hilft, kann ich Dir allerdings nicht sagen...
Gruß!

Offline Wieczorrek

  • Frischling
  • *
  • Beiträge: 6
Re: Bilder exportieren, DXLExporter Fehler "Operation failed"
« Antwort #2 am: 07.08.06 - 12:56:58 »
Hallo Frischling,

ich habe also doch nicht alles komplett beschrieben.

Ja, man kann die Formelssprache mit NotesScript verwenden, aber leider nicht innerhalb eines Agenten. Ich will die Dokumente ja nicht manuell anklicken.

Gruß

Carsten

klaussal

  • Gast
Re: Bilder exportieren, DXLExporter Fehler "Operation failed"
« Antwort #3 am: 07.08.06 - 13:15:23 »
Wo steht denn, dass man EVALUATE nicht in Agenten einsetzen darf ?

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re: Bilder exportieren, DXLExporter Fehler "Operation failed"
« Antwort #4 am: 07.08.06 - 13:41:21 »
Vermutlich handelt es sich bei der gewünschten Funktion um @Command( [FileExport] ) und @Commands können nicht zusammen mit Evaluate verwendet werden.
Ich habe mal sowas ähnliches wie deine Alternativlösung gemacht. Grob sah das so aus und hat recht gut funktioniert:

- Maske erstellen, die die Felder enthält, in denen die Bilder sind
- Im Postopen-Event der Maske den @Command( [FileExport] ) Befehl einbauen (Filenamen aus Dokument-Id und Endung zusammenbauen)
- Per LotusScript oder Formel (weiß nicht mehr genau) die gewählten Dokumente durchlaufen
- Für jedes Dokument: temporär die neue Maske zuweisen, Dokument öffnen und schließen (im Frontend)
Beim Öffnen des Dokuments wird das Dokument dann in eine Datei exportiert.

Wie gesagt, schon lange her, aber so in der Art sollte es funktionieren.

Besser wäre natürlich, den Fehler beim DXL-Export zu finden. Wahrscheinlich aber auch viel aufwändiger.
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline Wieczorrek

  • Frischling
  • *
  • Beiträge: 6
Re: Bilder exportieren, DXLExporter Fehler "Operation failed"
« Antwort #5 am: 07.08.06 - 14:18:39 »
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

Offline jtuemmer

  • Frischling
  • *
  • Beiträge: 19
Re: Bilder exportieren, DXLExporter Fehler "Operation failed"
« Antwort #6 am: 08.08.06 - 06:44:15 »
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

Offline Wieczorrek

  • Frischling
  • *
  • Beiträge: 6
Re: Bilder exportieren, DXLExporter Fehler "Operation failed"
« Antwort #7 am: 08.08.06 - 07:57:27 »
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

Offline Wieczorrek

  • Frischling
  • *
  • Beiträge: 6
Re: Bilder exportieren, DXLExporter Fehler "Operation failed"
« Antwort #8 am: 09.08.06 - 16:32:45 »
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


Offline Wieczorrek

  • Frischling
  • *
  • Beiträge: 6
Re: Bilder exportieren, DXLExporter Fehler "Operation failed"
« Antwort #9 am: 09.08.06 - 16:40:14 »
Tschuldigung, Zeile 6 des .net Codes lautet natürlich

wApp = New Word.Application

Gruß

Carsten

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Bilder exportieren, DXLExporter Fehler "Operation failed"
« Antwort #10 am: 09.08.06 - 16:57:31 »
Wenn du an dein UD.close noch ein (true) anhängst, sollte sich die Redbox von alleine erledigen.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Bilder exportieren, DXLExporter Fehler "Operation failed"
« Antwort #11 am: 09.08.06 - 17:39:34 »
Dieser neue Parameter wurde extra bei R6 eingeführt, um das unselige Verhalten von R4 und R5 in diesem Punkt zu verbessern. Meistens klappt das auch  ;)

Bernhard

PS: 250 Dokumente ist aber auch schon eine stattliche Verbesserung in R6 gegenüber R5  ;D

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz