Domino 9 und frühere Versionen > Entwicklung

PDF's als Attachments - automatisch

(1/3) > >>

RvM:
 :-[
Ich gebe zu, ich bin im scripten nicht der Größte.
Ich möchte gerne PDF-Dateien aus einem Unterverzeichnis einfach nur selektieren und dann per Agent daraus je ein Dok mit entsprechenden Attachment machen.
hat jemand vielleicht eine Hilfe für mich?

eknori:
yoo, da hab ich was.

hab momentan hier nur den Code; die Designelemente muß ich danach noch zusammenfummeln.

Du kannst damit beliebige Dateien eines Verzeichnisses entweder

- 1 Doc pro Datei
- alle files in ein doc

importieren lassen.

ich schaue nachher mal nach dem Rest

'==========================================================================================
' C L A S S "recursionManager"
'==========================================================================================
Public Class recursionManager
   
   Private m_ws As NotesUIWorkSpace
   Private m_ses As NotesSession
   Private m_db As NotesDatabase
   Private m_currentPath As String
   Private m_fileSpecs As Variant
   Private m_recurse As Variant
   Private m_SingleDoc  As Variant
'   Private dummy As NotesItem
   
   Private Function getImportRules As Variant
      Dim doc As NotesDocument
      Set doc = Me.m_db.CreateDocument
         'continue = Me.m_ws.DialogBox("DefaultDialog", True, True, False, False, False, False, "Import Rules", doc) = -1
      continue = Me.m_ws.DialogBox("($ImportRules)", True, True, False, False, False, False, "Import Rules", doc) = -1
      If continue Then
         Me.m_currentPath = doc.startPath(0)
         Me.m_fileSpecs = doc.fileSpecs
         Me.m_recurse = doc.canRecurse(0) = "1"
         Me.m_SingleDoc = doc.OneDocument(0)="1"
         If Right$(Me.m_currentPath, 1) <> "\" Then Me.m_currentPath = Me.m_currentPath & "\"
      End If
      getImportRules = continue
   End Function
   
   Private Function processDirectory (currentPath$) As Variant
      Dim doc As NotesDocument
      Dim rtitem As NotesRichTextItem
      Dim object As NotesEmbeddedObject
      Dim Item As NotesItem
      Dim fileList List As String
      Dim importList List As String
      Dim dirList List As String
      Dim pb As New LNProgressBar(True)
      Dim i As Long, x As Long
      
      Call pb.SetText("Dateien importieren","Durchsuche: " & currentPath$)
      x = 0
      
      If Me.m_recurse Then
         
         fileName$ = Dir$(currentPath$ & "*.*", 0)
         Do While fileName$ <> ""
            fileList(fileName$) = fileName$
            fileName$ = Dir$()
         Loop
         
         fileName$ = Dir$(currentPath$ & "*", 16)
         Do While fileName$ <> ""
            If Left$(fileName$, 1) <> "." And Not Iselement(fileList(fileName$)) Then dirList(fileName$) = fileName$
            fileName$ = Dir$()
         Loop
      End If
      
      Forall fS In Me.m_fileSpecs
         fileName$ = Dir$(currentPath$ & fS, 0)
         Do While fileName$ <> ""
            importList(fileName$) = fileName$
            fileName$ = Dir$()
            Print FileName$
            x = x +1                    
         Loop
      End Forall
      
      Call pb.SetProgressRange(x)
      
      If m_SingleDoc Then
         
         i = 1
         
         Forall iL In importList
            Set doc = Me.m_db.CreateDocument
            Set rtitem = New NotesRichTextItem(doc, "Body")
            Set object = rtitem.EmbedObject(EMBED_ATTACHMENT, "", currentPath$ & iL, "")
            Call pb.SetProgressPos(i)                    
                   'doc.objPath = currentPath$
            doc.Form = "FileImport"
            doc.Subject = currentPath$ + iL
            Call doc.Save(True, True, True)
            i = i +1
         End Forall    
         
      Else
         
         Set doc = Me.m_db.CreateDocument
         i = 1
         
         Forall iL In importList
            Set rtitem = New NotesRichTextItem(doc, "Body")
            Set object = rtitem.EmbedObject(EMBED_ATTACHMENT, "", currentPath$ & iL, "")
         '   doc.objPath = currentPath$
'            Set dummy = doc.ReplaceItemValue ( objPath , CurrentPath$ )
'            Set Item = doc.ReplaceItemValue ( Form , "Fileimport" )
'            Set Item = doc.ReplaceItemValue ( AttFileName , iL )
            Call pb.SetProgressPos(i)                    
            i = i +1
         End Forall
         
         'doc.Form = "FileImport"
         'doc.Subject = "Datenimport"
         Call doc.Save(True, True, True)              
         
      End If
      
      If Me.m_recurse Then
         
         Forall dL In dirList
            newPath$ = currentPath$ & dL
            If Right$(newPath$, 1) <> "\" Then newPath$ = newPath$ & "\"
            Call processDirectory(newPath$)
         End Forall
      End If
      
      Delete pb                
      
   End Function
   
   Public Function run As Variant
      continue = getImportRules
      If continue Then Call processDirectory(Me.m_currentPath)
      run = continue
   End Function
   
   Sub new
      Set Me.m_ws = New NotesUIWorkSpace
      Set Me.m_ses = New NotesSession
      Set Me.m_db = Me.m_ses.CurrentDatabase
   End Sub
   
   Sub delete
      
   End Sub
End Class

RvM:
 :-*
eknori du bist der hammer - thx

koehlerbv:
Na, was nicht ist, kann ja noch werden ;-) Jeder hat mal klein angefangen ...

Ein paar Tips (immer: Siehe DesignerHelp):
- Attachment selektieren mit NotesUIWorkspace.FileOpenDialog
- Wurde ein Attachment selektiert (nein: Ende Banane, Ja: Siehe unten)
- Neues Dokument erstellen (NotesDatabase.CreateDocument)
- Wichtige interne Felder vorbelegen (wie Form etc.)
- Gewünschtes RichText item erstellen (siehe NotesRichTextItem class)
- Mit NotesRichTextItem.EmbedObject (siehe dort) ausgewähltes File anhängen.
- Dokument speichern

Ich denke mal, am meisten lernst Du, wenn Du nach diesem Kochrezept vorgehst. Wenn es dann zwischendurch klemmt, meld' Dich gleich wieder ;-)

Bernhard

eknori:
so, hab mal schnell ne Demo gebaut

( die Auswahl des Verzeichnisses funzt leider nicht, daher manuell eintragen )

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln