Domino 9 und frühere Versionen > Entwicklung

Inhalte von .pdf und .doc in rtf-feld anzeigen

<< < (4/7) > >>

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