L
Lia
Задача следующая:
1)достать из RTI картинку в формате base64;
2)потом её сохранить в формате jpg;
3)вставить в нужную ячейку Excel.
Вот что у меня пока что выходит:
Суть проблемы, что почему-то стало выкидывать на этапе Call exporter.Process . Почему?
А до этого я получала pictureBase64 картинки и пыталась преобразовать. Но его нельзя было открыть/прочитать. Потом я взяла отдельно преобразовала картинку в форма base64 и там совершенно другой набор символов Что я упускаю?
1)достать из RTI картинку в формате base64;
2)потом её сохранить в формате jpg;
3)вставить в нужную ячейку Excel.
Вот что у меня пока что выходит:
Код:
Dim s As NotesSession
Dim db As NotesDatabase
Dim inputstream As NotesStream
Dim exporter As NotesDXLExporter
Dim domparser As NotesDOMParser
Dim rootElement As NotesDOMElementNode
Dim docNode As NotesDOMDocumentNode
Dim docList As NotesDOMNodeList
Dim itemList As NotesDOMNodeList 'list of <item> nodes
Dim node As NotesDOMNode 'an <item> node
Dim aNode As NotesDOMAttributeNode 'a "name" attribute
Dim i As Integer
Dim pictureBase64 As String
Dim filename As String
fileName = "c:\InputFile.dxl"
Set db = curdoc.Parentdatabase
Set s = db.Parent
Set inputstream = s.Createstream
If inputstream.Open(fileName) Then
Call inputstream.Truncate()
Set exporter = s.Createdxlexporter
exporter.OutputDOCTYPE = False
exporter.RichTextOption = RICHTEXTOPTION_RAW
Call exporter.SetInput(doc)
inputstream.Writetext(exporter.Export(doc))
Set domparser = s.CreateDOMParser
Call domparser.setinput(exporter)
Call exporter.Process 'стало проскакивать
Set docNode = domparser.Document
Set rootElement = domParser.Document.DocumentElement
Set doclist = rootElement.Getelementsbytagname("*")
If docList.NumberOfEntries = 0 Then
MessageBox "No <document> element nodes in file", , "Error"
Exit Sub
End If
Set itemlist = docnode.Getelementsbytagname("item")
If itemList.NumberOfEntries = 0 Then
MessageBox "No <item> element nodes in file", , "Error"
Exit Sub
End If
For i = 1 To itemList.NumberOfEntries
Set node = itemList.GetItem(i)
Set aNode = node.Attributes.Getitem(1)
If anode.AttributeValue = "Signature" Then
pictureBase64 = node.Lastchild.Lastchild.Nodevalue
MessageBox pictureBase64
End If
Next
End If
'Dim objXML As Variant
'Dim objDocElem As Variant
'Dim writebytes As Variant
'Dim objStream As Variant
'Set objXML = CreateObject("MSXml2.DOMDocument")
'Set objDocElem = objXML.createElement("tmp")
'objDocElem.DataType = "bin.base64"
'objDocElem.text = pictureBase64
'writeBytes = objDocElem.NodeTypedValue
'Set objStream = CreateObject("ADODB.Stream")
'objStream.Type = 1 ' TypeBinary
'objStream.Open
'objStream.Write writeBytes 'write binary data to a binary Stream object.
'objStream.SaveToFile "C:\Temp\test.jpg", 2
Суть проблемы, что почему-то стало выкидывать на этапе Call exporter.Process . Почему?
А до этого я получала pictureBase64 картинки и пыталась преобразовать. Но его нельзя было открыть/прочитать. Потом я взяла отдельно преобразовала картинку в форма base64 и там совершенно другой набор символов Что я упускаю?