Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: masterste2000 am 08.02.12 - 14:44:20

Titel: Datei aus einem RTF Feld in eine anderes Dokument / RTF kopieren
Beitrag von: masterste2000 am 08.02.12 - 14:44:20
Hallo Zusammen,

ich hoffe Ihr könnt mit helfen.

Alles bezieht sich auf eine und die selbe Datenbank.

Ich habe ein Dokument und in diesem ist ein RTF mit einem PDF-Dokument.

Dieses PDF-Dokument möchte ich jetzt beim öffnen eines neuen Dokuments in ein RTF in dem neuen Dokument kopieren.

Wenn ich mit dem Debugger das Script kontrolliere kann ich das PDF-Dokument im Item greifen, aber ich bekomme es nicht in das neue Dokument / RTF kopiert!

Hier mal der Code:

        Dim session As New NotesSession
   Dim db As NotesDatabase
   Set db = session.CurrentDatabase
   Dim view As NotesView
   Dim doc As NotesDocument
   Set view = db.GetView( "(PDF_Dokumente)" )
   Set doc = view.GetFirstDocument
   'Bis jetzt hat es das Dokument mit dem PDF-Dokument an doc übergeben.
      
   Dim rtitem As Variant
   Set rtitem = doc.GetFirstItem( "Dienstreisepdf" )
   'Hier wird rtitem das Item vom RTF übergeben
   
   ---> Und hier hänge ich wie bekomme ich das Item mit dem PDF in das des RTF Feld des neuen Dokuments kopiert??????
Titel: Re: Datei aus einem RTF Feld in eine anderes Dokument / RTF kopieren
Beitrag von: m3 am 08.02.12 - 15:00:12
Deja vu?
http://atnotes.de/index.php/topic,53672.msg346352.html
Titel: Re: Datei aus einem RTF Feld in eine anderes Dokument / RTF kopieren
Beitrag von: Tode am 08.02.12 - 15:15:13
Nee, Martin, das ist ein bisschen was anderes, obwohl die Antwort (NotesUIDocument.ImportItem) die selbe sein KANN.

Wenn man das nicht über die Zwischenablage machen will, dann MUSS man
- über rtitem.EmbeddedObjects iterieren
- prüfen, ob es sich um ein Object vom Type ATTACHMENT handelt
- wenn ja: Extrahieren in einen Temp- Pfad (am besten über Environ( "Temp" ) ermitteln)
- Attachment wieder attachen
Titel: Re: Datei aus einem RTF Feld in eine anderes Dokument / RTF kopieren
Beitrag von: masterste2000 am 08.02.12 - 15:42:19
Hallo danke für die schnellen Antworten, aber
NotesUIDocument.ImportItem
gibt es noch nicht in LoNo 7 oder doch?


Hi Martin wie bzw. mit welcher Klasse kann ich in das UIDOC das Attachment anhängen.


Titel: Re: Datei aus einem RTF Feld in eine anderes Dokument / RTF kopieren
Beitrag von: Axel am 08.02.12 - 16:20:59
... wie bzw. mit welcher Klasse kann ich in das UIDOC das Attachment anhängen.

Über Frontend-Klassen geht da garnichts. Schau dir mal die Methode NotesDocument.CopyItem an. Damit sollte es gehen.

Axel
Titel: Re: Datei aus einem RTF Feld in eine anderes Dokument / RTF kopieren
Beitrag von: m3 am 08.02.12 - 16:22:54
Wobei ImportItem ja undokumentiert ist ...
Titel: Re: Datei aus einem RTF Feld in eine anderes Dokument / RTF kopieren
Beitrag von: koehlerbv am 08.02.12 - 16:24:27
Über Frontend-Klassen geht da garnichts.

Doch - via Copy & Paste, was durchaus auch in der Praxis eingesetzt wird.

Bernhard
Titel: Re: Datei aus einem RTF Feld in eine anderes Dokument / RTF kopieren
Beitrag von: Axel am 08.02.12 - 16:50:47
Du hast recht Bernhard.

Da ich vieles über's Backend mache, sind mir diese Methoden noch nicht untergekommen. 

Axel
Titel: Re: Datei aus einem RTF Feld in eine anderes Dokument / RTF kopieren
Beitrag von: koehlerbv am 08.02.12 - 16:59:15
Wenn es sauberer geht, versucht man natürlich auch, einen solchen Stunt zu vermeiden. Aber wenn beispielsweise ein RTF vorbelegt werden soll, jedoch ein Speichern allein dem User überlassen bleiben soll, dann bleibt einem nichts anderes (versionsunabhängiges).

Bernhard
Titel: Re: Datei aus einem RTF Feld in eine anderes Dokument / RTF kopieren
Beitrag von: masterste2000 am 09.02.12 - 07:37:33
Guten Morgen,

mit soviel Antworten hätte ich jetzt nicht gerechnet.

Bernhard @all könnt ihr mir mal ein Beispiel Skript hier einstellen.

Danke!

Titel: Re: Datei aus einem RTF Feld in eine anderes Dokument / RTF kopieren
Beitrag von: pram am 09.02.12 - 23:36:20
fertigen Code gibts hier selten...  ::)

wenn du aber an deinen bestehenden Code noch folgende 5 Zeilen anhängst, sollte das Feld im Backend kopiert werden und das neue Dok. aufgehen.

dim newDoc as new NotesDocument(db)
dim newRti as new NotesRichtextItem(newDoc, "body")
call newRti.appendRtItem( rtItem)
call newRti.update()
call workspace.editDocument(true, newDoc)

das Ganze musst du aber in einen "Neu"-Button/Agent auslagern und kannst nicht im QueryOpen machen, da du hier noch kein Doc zur Verfügung hast (und im postOpen ist es zu spät um den Richtext zu ändern, außer du verwendest das undokumentierte uiDoc.importItem() dann wärs sogar nur noch eine Zeile die dir in deinem Code aus dem ersten Post fehlt)
oder du machst noch einen Reopen

Gruß
Roland