Domino 9 und frühere Versionen > Entwicklung
Inhalte von .pdf und .doc in rtf-feld anzeigen
TMC:
Axel, genau habe ich in meiner Beispiel-DB verwendet :)
Matthias
Axel_Janssen:
:outsch: ;D
vielleicht ist das Internet Explorer plug-in irgendwie stabiler.
koehlerbv:
Ich kriege einen Klaps - das ActiveX-Control will wirklich, dass vorher irgendwas im FrontEnd passiert !
Mit folgendem Code im PostOpen geht es sich - dazu muss man sich noch eine Maske "(DummyForm") basteln, und die Adobe-Maske sollte die Vorgabemaske sein.
--- Code: ---Sub Postopen(Source As Notesuidocument)
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim dbCurrent As NotesDatabase
Dim docTemp As NotesDocument
Dim uidocTemp As NotesUIDocument
Dim doc As NotesDocument
Dim adobe As Variant
Dim rtItem As NotesRichTextItem
Dim strWinTemp As String
Dim strStartPDF As String
On Error Goto ErrorRoutine
If Source.EditMode = True Then Exit Sub 'Exit wenn Dok in Bearbeitung
Set doc= Source.Document
Set adobe = Source.GetObject("Acrobat Control for ActiveX")
Set rtItem = doc.GetFirstItem ("PDF")
strWinTemp = WinTemp 'see function.....
'Msgbox "strWinTemp"
Forall obj In rtItem.EmbeddedObjects
If (obj.Type=Embed_Attachment) Then
Call obj.ExtractFile(strWinTemp & "\" & obj.Source)
'Sleep (5)
'Msgbox "Extrahiert"
Set dbCurrent = session.CurrentDatabase
Set docTemp = dbCurrent.CreateDocument
docTemp.Form = "(DummyForm)"
Set uidocTemp = ws.EditDocument (False, docTemp, True)
Call uidocTemp.Close
adobe.LoadFile(strWinTemp & "\" & obj.Name)
'Msgbox "Geladen"
End If
End Forall
Exit Sub
ErrorRoutine:
Msgbox "An error occured: " & Error$ & " (in line " & Cstr (Erl) & ")"
Exit Sub
End Sub
--- Ende Code ---
Mal sehen, ob dafür einer eine logische Begründung findet ...
By the way: Hilft das eigentlich bei der ursprünglichen Frage dieses Threads ? Unschön ist auch die Bedienung, um aus dem PDF wieder back to Notes zu kommen - die meisten Anwender werden da wohl aus Versehen Notes schliessen anstatt Adobe Acrobat Reader (mit Babelfish: "Lehmziegel Turner Leser" ;-) zu schliessen. Aber die Idee an sich hat was.
Ciao,
Bernhard
koehlerbv:
Nachtrag:
An sich wäre es ja nett, wenn man die sowieso vorhandene Form "Adobe" für NotesUIWorkspace.EditDocument gleich verwenden könnte. Aber hier gilt:
"Wer ander'n eine Gräbe grubt,
sich selber in die Nase pupt !"
Damit wird ja gleich wieder das PostOpen der zu öffnenden Maske ausgeführt ... Würde Notes da nicht nach einer Weile selber streiken, wäre dies: "'In Ewigkeit - Amen !', sprach die Endlosschleife ..."
Wegen letzterem: Jeeeeeeeeens !
Ciao,
Bernhard
TMC:
--- Zitat von: koehlerbv am 03.04.04 - 16:59:42 ---An sich wäre es ja nett, wenn man die sowieso vorhandene Form "Adobe" für NotesUIWorkspace.EditDocument gleich verwenden könnte. Aber hier gilt:
"Wer ander'n eine Gräbe grubt,
sich selber in die Nase pupt !"
Damit wird ja gleich wieder das PostOpen der zu öffnenden Maske ausgeführt ...
--- Ende Zitat ---
Geht schon:
--- Code: ---Sub Postopen(Source As Notesuidocument)
On Error Goto errHandler
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim dbCurrent As NotesDatabase
Dim docTemp As NotesDocument
Dim uidocTemp As NotesUIDocument
Dim doc As NotesDocument
Dim adobe As Variant
Dim rti As NotesRichTextItem
Dim strWinTemp As String
Dim strStartPDF As String
Dim oFirst As NotesEmbeddedObject
If Source.EditMode = True Then Exit Sub 'Exit wenn Dok in Bearbeitung
Set doc= Source.Document
If source.FieldGetText("TempFlag") = "1" Then Exit Sub
Set adobe = Source.GetObject("Acrobat Control for ActiveX")
Set rti = doc.GetFirstItem("PDF")
Set oFirst = rti.EmbeddedObjects(0)
If oFirst Is Nothing Then
Msgbox "No embedded object in document"
Exit Sub
End If
strWinTemp = WinTemp 'see function.....
Call oFirst.ExtractFile(strWinTemp & "\" & oFirst.Source)
Set dbCurrent = session.CurrentDatabase
Set docTemp = dbCurrent.CreateDocument
docTemp.Form = "Adobe"
docTemp.TempFlag = "1"
Set uidocTemp = ws.EditDocument (False, docTemp, True)
Call uidocTemp.Close
adobe.LoadFile(strWinTemp & "\" & oFirst.Name)
exitScript:
Exit Sub
errHandler:
Msgbox "An error occured." & Chr(10) & Chr(10) _
& "Error text: " & Error$ & Chr(10) _
& "Error number: " & Err & Chr(10) _
& "Line: " & Erl & Chr(10) _
,64,"Error"
Resume exitScript
End Sub
--- Ende Code ---
Bitte nicht erschrecken, ist mein Baustellen-Code zum testen :-)
Ich habe in der Maske ein Hidden-Field "TempFlag".
So klappt es jetzt lt. den ersten Tests :)
Matthias
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln