Domino 9 und frühere Versionen > ND8: Entwicklung
GIF Dateien importieren
pram:
Weiß zwar jetzt nicht ob bzw. was du mit Tode ausgemacht hast, aber wenn man sich nicht mit DXL/C-API rumschlagen will, kann man das mit MIME machen... was zwar nicht weniger kompliziert ist, aber hier schon eine nahezu fertige Lösung existiert, wie man ein Inline-Image importiert:
http://atnotes.de/index.php/topic,52040.0.html
--- Zitat ---- Durch Setzen von session.convertMime = true wird beim nächsten Zugriff auf das Item (über doc.getFirstItem) das Mime-Item von Notes wieder in einen Richtext konvertiert. Dieses Item kann dann an ein anderes Richtext-Item angefügt werden.
Damit kann man z.B. speziell formatierte Texte/Links/Bilder/... an ein bestehendes RICHTEXT-Item anhängen.
--- Ende Zitat ---
Gruß
Roland
mweitzel:
Danke an alle Tips,
ich habe es mittlerweile selbst hinbekommen. So schaut das Script nun aus.
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim newdoc As NotesDocument
Dim workspace As New NotesUIWorkspace
Dim rtitem As NotesRichTextItem
Dim uidoc As NotesUIDocument
Dim fileNum As Integer
Dim counter As Integer
Dim countRec As Integer
Dim txt As string
Dim view As NotesView
Dim Temp As String
Dim TempArray As integer
Dim filename As String
Dim columnNames As Variant
Dim Anzahlspalten As Variant
Dim KTOp As variant
Set db = session.CurrentDatabase
filename$="Q:\batch\indextest.txt"
fileNum% = FreeFile()
counter% = 0
Set view = db.GetView( "Ansicht" )
Open filename$ For Input As fileNum%
Do While Not EOF(fileNum%)
Line Input #fileNum%, txt$
ktop = InStr(txt,".")
ktop = Left(txt,KTOp - 1)
Set newDoc = New NotesDocument( db)
newDoc.Form = "Unterschriften erfassen"
newDoc.Ueberprueft = "Ja"
newDoc.tKontonummer = ktop
Set rtitem = New NotesRichTextItem( newdoc, "ScanRT" )
Call newDoc.Save( false, false )
newDoc.Aktiv = "1"
Set uidoc = workspace.EditDocument(True,newdoc)
Call uidoc.GotoField("ScanRT")
Call uidoc.import("GIF Image","\\FS00G97N\html\gif\" & TXT)
Call uidoc.save
Call uidoc.close
counter% = counter% + 1
Loop
'Die Datei auch wieder schliessen...
Close fileNum%
End Sub
Peter Klett:
Und das funktioniert bei 7.000 Dateien? Nach meiner Erfahrung raucht Notes bei solchen Agenten etwa bei dem 40. bis 50. Dokument ab, da uidoc öffnen, speichern schließen, nächstes uidoc öffnen usw. nicht sequentiell abläuft. Vielleicht sind Deine Dokumente schlanker als meine und Notes schafft dadurch mehr, aber 7.000 will ich nicht wirklich glauben. Für eine Einmalaktion ist das aber gut genug, notfalls kannst Du die Dateien ja aufteilen.
Die Lösung mit der txt-Datei, die die Dateinamen enthält, ist auch ok. Falls Du das Erstellen der Datei sparen wolltest, könntest Du den Befehl Dir in LotusScript verwenden, etwa so:
datei = Dir (pfad)
Do While datei <> ""
'mach was mit der Datei
datei = Dir ()
Loop
Es gibt meistens mehrere Wege, ein Ziel zu erreichen, entscheidend ist aber, dass man ankommt. Gut, dass Du es selbst geschafft hast.
Tode:
Schön das Du es geschafft hast, ansonsten kann ich Peter zu 100% Recht geben.
ERR:
Hallo,
hier ein kleiner Beitrag meinerseits:
--- Code: ---Option Public
Option Declare
Sub Initialize
'Fehlerbehandlung
On Error GoTo Error_Handler
'
'Variablen
Dim nsession As New NotesSession
Dim ndb As NotesDatabase
Dim ndo As NotesDocument
Dim nritbody As NotesRichTextItem
Dim strFileName As String
'
'Prozedur
Set ndb = nsession.CurrentDatabase
' NotesDocument aus UnprocessedDocuments ermitteln
Set ndo = ndb.Unprocesseddocuments.Getfirstdocument()
' Dateiname mit Pfad
strFileName = "E:\a.gif"
' Feld im NotesDocument für die Grafik
Set nritbody = New NotesRichTextItem(ndo, "BODY")
' Grafik importieren
Call nritbody.AppendRTItem(fktGrabImage(ndo, strFileName, ""))
' RichTextItem updaten
Call nritbody.Update
' Dokument speichern
Call ndo.Save(True, True, True)
Exit Sub
Error_Handler:
Print Err, Erl, Error
End Sub
Function fktGrabImage(ndo As NotesDocument, ByVal strFilepath As String, ByVal strType As String) As NotesRichTextItem
'Fehlerbehandlung
On Error GoTo Error_Handler
'
'Variablen
Dim nsession As New NotesSession
Dim nstream As NotesStream
Dim nMIMEhdr As NotesMIMEHeader
Dim nMIMEEntity As NotesMIMEEntity
Dim varCID As Variant
Dim strRTIName As String
Dim strTmp As String
Dim lngSeqNo As Long
Dim boolConvert As Boolean
'
'Prozedur
lngSeqNo = 1
' Dateierweiterung prüfen
If strType = "" Then
strTmp = LCase(StrRightBack(strFilePath, "."))
Select Case strTmp
Case "gif", "jpeg", "tiff"
' wird unterstützt
strType = strTmp
Case "jpg"
' wird unterstützt, muß aber angepasst werden
strType = "jpeg"
Case Else
' wird nicht unterstützt
Error 10030, {Unknown image file extension "} & strTmp & {"}
End Select
End If
' Name für MIME-Entity erzeugen
varCID = Evaluate({ @Replacesubstring(@Text(@Now; "*"); ":"; "") } )
strRTIName = "i" & varCID(0) & "-" & lngSeqNo
' MIME-Entity erzeugen
Set nMIMEEntity = ndo.CreateMIMEEntity(strRTIName)
' MIME-Header erzeugen
Set nMIMEhdr = nMIMEEntity.CreateHeader("MIME-Version")
If Not (nMIMEhdr Is Nothing) Then
Call nMIMEhdr.SetHeaderValAndParams(|1.0|)
End If
' NotesStream aus Datei erzeugen
Set nstream = nsession.CreateStream
If nstream.Open(strFilePath, "Binary") Then
' Datei in MIME-Entity einfügen
Call nMIMEEntity.SetContentFromBytes(nstream, "image/" & strType, ENC_IDENTITY_BINARY)
Else
' Datei konnte nicht geöffnet werden
Error 10029, "Image file not found: " & strFilepath
End If
' MIME Verarbeitung beenden
Call ndo.CloseMIMEEntities(True, strRTIName)
' ConvertMime Zustand merken
boolConvert = nsession.ConvertMime
' ConvertMime auf True setzen, damit der MIME-Inhalt konvertiert wird
nsession.ConvertMime = True
Set fktGrabImage = ndo.GetFirstItem(strRTIName)
' ConvertMime wieder auf den vorherigen Zustand zurücksetzen
nsession.ConvertMime = boolConvert
Exit Function
Error_Handler:
Print Err, Erl, Error
End Function
--- Ende Code ---
Mit diesem Agenten kann man Grafiken in Richtext-Felder importieren. Initialize muß nach Bedarf entsprechend angepasst werden.
MFG
ERR
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln