Hallo Forum,
ich habe ein Problem, bei dem ich nicht so recht weiterkomme.
Ich importiere via XML Bilddateien (GIF, JPG) in die Notes Bildressource um diesen in der Anwendung anzuzeigen.
Grund hierfür ist, dass ein Kunde seine eigenen Bildressourcen für eine Anwendung verwenden kann.
Das funktioniert soweit auch ganz gut.
Nur muss ich nun auch PNG Bilddateien importieren. Hier funktioniert das Ganze aber nicht mehr.
Es wird zwar ein Eintrag in der Bildressource gemacht, jedoch wird diese nicht als PNG Datei erkannt.
Importiere ich die Datei zum Test direkt im Designer, wird diese ordentlich angezeigt.
Und nun die Fragen:
1) Kann man überhaupt PNG Dateien in Notes via XML importieren? (Ich gehe mal davon aus!)
2) Wo ist der Unterschied dann zu GIF und JPG?
Notes/Domino 9.0.1 deutsch unter Windows
Hier noch den Code den ich verwende.
In der Funktion EncodeFile() wird nach Base64 encoded.
Grüße
Bernd
Function C_Picture_Import_Engine(imageFile As String) As integer
On Error GoTo errhandler
Dim ses As New NotesSession
Dim head As String
Dim imgData As Variant
Dim imageName As String
Dim imageType As String
Dim filename As String
Dim foot As String
Dim stream As NotesStream
Dim importer As NotesDXLImporter
C_Picture_Import_Engine = False
imageName = StrRightBack(imageFile, "\")
imageType = StrRightBack(imageFile, ".")
'write header
head = |<?xml version='1.0' encoding='utf-8'?>|&_
|<!DOCTYPE imageresource SYSTEM '| & ses.Getenvironmentstring("NotesProgram", True) & |xmlschemas/domino_8_5_2.dtd'>|&_
|<imageresource name='| & imageName & |' xmlns='http://www.lotus.com/dxl' version='8.5'|&_
| maintenanceversion='2.0' replicaid='052570D600117507' publicaccess='false'|&_
| designerversion='8.5.2'>|&_
|<| & imageType & |>|
imgData = FreeFile
Open imageFile & ".xml" For Output As imgData
Print #imgData, head
Close #imgData
'append encoded image data
Call EncodeFile(imageFile, imageFile & ".xml")
'append footer
foot = |</| & imageType & |></imageresource>|
imgData = FreeFile
Open imageFile & ".xml" For Append As imgData
Print #imgData, foot
Close #imgData
' Open the newly created dxl file
Set stream = ses.CreateStream
filename = imageFile & ".xml"
If Not stream.Open(filename) Then
MsgBox "Cannot open " & filename, 16, "Error"
Exit Function
End If
If stream.Bytes = 0 Then
MsgBox "setup_picture_no_file_exist", 16, filename
Exit Function
End If
' Import the DXL in "create" mode - replaces existing images
Set importer = ses.CreateDXLImporter
Call importer.SetInput(stream)
Call importer.SetOutput(CONNECTDatabase)
importer.ReplaceDBProperties = True
importer.ReplicaRequiredForReplaceOrUpdate = False
importer.DesignImportOption = DXLIMPORTOPTION_REPLACE_ELSE_CREATE
Call importer.Process
Call stream.Close
'temp File wieder löschen
Kill imageFile & ".xml"
Exit Function
errhandler:
if Not importer is Nothing then
Call MsgBox("E", 3, "Error in library ... - function: C_Picture_Import_Engine() - Error: " & Error & " (" & Err & ") in line: " & Erl & Chr$(10) & "Importer: " & importer.log, "")
else
Call MsgBox("E", 3, "Error in library ... - function: C_Picture_Import_Engine() - Error: " & Error & " (" & Err & ") in line: " & Erl, "")
End If
Exit Function