Hallio Hallö.
Folgendes Problem tut sich auf:
Ich habe einen Import für DXL-Files (ich möchte Design-Elemente importieren, genauer gesagt File-Resourcen). Soweit so gut. Exportiere ich das DXL aus Notes, funktioniert das ganze auch ganz wunderbar.
Der Haken an der Sache ist folgender: Da ich einen ganzen Verzeichnisbaum durch (beispielsweise Perl) in ein DXL/XML verwandeln will, habe ich mal auf diverse "Weglassfähigkeiten" der Attribute getestet:
Die ReplicaID ist durch eine selbsgewählte Zeichenfolge ersetzbar, ebenso die NoteID (beide kann ich durch eine fortlaufende Nummerierung ersetzen lassen).
Das Problem an der Sache ist, dass dieses eben für die unid
<noteinfo noteid='185' unid='2DE946FEE050A7FDC1256FF50028FB34' sequence='3'>
eben nicht gilt. Kann man die irgendwie umgehen, oder beim Einfügen der Elemente vergeben lassen / bzw. irgendwie errechnen (ausserhalb von Notes)? Falls Fragen zum Importer aufkommen, das ist der aus der Lotus-Notes-Hilfe, mit der Modifikation, dass die Dokumente nicht in eine dbCopy, sondern in die aktuelle eingefügt werden.
vielen Dank für Hilfe schon mal im vorraus
Zuerst einmal folgendes: Nicht nur Binärdateien, sondern alle File-Resourcen werden base64-verschlüsselt.
Und als Beispiel:
fck_editor.css (Normal)
/*
* FCKeditor - The text editor for internet
* Copyright (C) 2003-2004 Frederico Caldeira Knabben
*
* Licensed under the terms of the GNU Lesser General Public License:
* http://www.opensource.org/licenses/lgpl-license.php
*
* For further information visit:
* http://www.fckeditor.net/
*
* File Name: fck_editorarea.css
* This is the default CSS file used by the editor area. It defines the
* initial font of the editor and background color.
*
* A user can configure the editor to use another CSS file. Just change
* the value of the FCKConfig.EditorAreaCSS key in the configuration
* file.
*
* Version: 2.0 RC3
* Modified: 2005-02-10 11:46:11
*
* File Authors:
* Frederico Caldeira Knabben (fredck@fckeditor.net)
*/
body
{
font-family: Arial, Verdana, Sans-Serif;
font-size: 12px;
padding: 5px 5px 5px 5px;
margin: 0px;
border-style: none;
background-color: #ffffff;
}
.Bold
{
font-weight: bold;
}
.Title
{
font-weight: bold;
font-size: 18px;
color: #cc3300;
}
.Code
{
border: #8b4513 1px solid;
padding-right: 5px;
padding-left: 5px;
color: #000066;
font-family: 'Courier New' , Monospace;
background-color: #ff9933;
}
Daraus wird dann folgender String gebastelt:
YQAcAAAAAwDSBAAAAQAAAAAAAAAAAAAAY3NzAGAA5AQAANIE0gQAAAAAAAAAAC8qCiAqIEZDS2Vk
aXRvciAtIFRoZSB0ZXh0IGVkaXRvciBmb3IgaW50ZXJuZXQNCiAqIENvcHlyaWdodCAoQykgMjAw
My0yMDA0IEZyZWRlcmljbyBDYWxkZWlyYSBLbmFiYmVuDQogKiANCiAqIExpY2Vuc2VkIHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlOg0KICog
CQlodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2xncGwtbGljZW5zZS5waHANCiAq
IA0KICogRm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24gdmlzaXQ6DQogKiAJCWh0dHA6Ly93d3cuZmNr
ZWRpdG9yLm5ldC8NCiAqIA0KICogRmlsZSBOYW1lOiBmY2tfZWRpdG9yYXJlYS5jc3MNCiAqIAlU
aGlzIGlzIHRoZSBkZWZhdWx0IENTUyBmaWxlIHVzZWQgYnkgdGhlIGVkaXRvciBhcmVhLiBJdCBk
ZWZpbmVzIHRoZQ0KICogCWluaXRpYWwgZm9udCBvZiB0aGUgZWRpdG9yIGFuZCBiYWNrZ3JvdW5k
IGNvbG9yLg0KICogDQogKiAJQSB1c2VyIGNhbiBjb25maWd1cmUgdGhlIGVkaXRvciB0byB1c2Ug
YW5vdGhlciBDU1MgZmlsZS4gSnVzdCBjaGFuZ2UNCiAqIAl0aGUgdmFsdWUgb2YgdGhlIEZDS0Nv
bmZpZy5FZGl0b3JBcmVhQ1NTIGtleSBpbiB0aGUgY29uZmlndXJhdGlvbg0KICogCWZpbGUuDQog
KiANCiAqIFZlcnNpb246ICAyLjAgUkMzDQogKiBNb2RpZmllZDogMjAwNS0wMi0xMCAxMTo0Njox
MQ0KICogDQogKiBGaWxlIEF1dGhvcnM6DQogKiAJCUZyZWRlcmljbyBDYWxkZWlyYSBLbmFiYmVu
IChmcmVkY2tAZmNrZWRpdG9yLm5ldCkKICovCg0KYm9keQ0Kew0KCWZvbnQtZmFtaWx5OiBBcmlh
bCwgVmVyZGFuYSwgU2Fucy1TZXJpZjsNCglmb250LXNpemU6IDEycHg7DQoJcGFkZGluZzogNXB4
IDVweCA1cHggNXB4Ow0KCW1hcmdpbjogMHB4Ow0KCWJvcmRlci1zdHlsZTogbm9uZTsNCgliYWNr
Z3JvdW5kLWNvbG9yOiAjZmZmZmZmOw0KfQ0KDQouQm9sZA0Kew0KCWZvbnQtd2VpZ2h0OiBib2xk
Ow0KfQ0KDQouVGl0bGUNCnsNCglmb250LXdlaWdodDogYm9sZDsNCglmb250LXNpemU6IDE4cHg7
DQoJY29sb3I6ICNjYzMzMDA7DQp9DQoNCi5Db2RlDQp7DQoJYm9yZGVyOiAjOGI0NTEzIDFweCBz
b2xpZDsNCglwYWRkaW5nLXJpZ2h0OiA1cHg7DQoJcGFkZGluZy1sZWZ0OiA1cHg7DQoJY29sb3I6
ICMwMDAwNjY7DQoJZm9udC1mYW1pbHk6ICdDb3VyaWVyIE5ldycgLCBNb25vc3BhY2U7DQoJYmFj
a2dyb3VuZC1jb2xvcjogI2ZmOTkzMzsNCn0=
Dieser wiederum, bei decodierung mit einem "Normalen" base64-Algorhytmus zu folgendem:
aÒcss`äÒÒ/*
* FCKed
itor - The text editor for internet
* Copyright (C) 200
3-2004 Frederico Caldeira Knabben
*
* Licensed under
the terms of the GNU Lesser General Public License:
*
http://www.opensource.org/licenses/lgpl-license.php
*
* For further information visit:
* http://www.fck
editor.net/
*
* File Name: fck_editorarea.css
* T
his is the default CSS file used by the editor area. It d
efines the
* initial font of the editor and background
color.
*
* A user can configure the editor to use
another CSS file. Just change
* the value of the FCKCo
nfig.EditorAreaCSS key in the configuration
* file.
*
* Version: 2.0 RC3
* Modified: 2005-02-10 11:46:1
1
*
* File Authors:
* Frederico Caldeira Knabben
(fredck@fckeditor.net)
*/
body
{
font-family: Aria
l, Verdana, Sans-Serif;
font-size: 12px;
padding: 5px
5px 5px 5px;
margin: 0px;
border-style: none;
back
ground-color: #ffffff;
}
.Bold
{
font-weight: bold
;
}
.Title
{
font-weight: bold;
font-size: 18px;
color: #cc3300;
}
.Code
{
border: #8b4513 1px s
olid;
padding-right: 5px;
padding-left: 5px;
color:
#000066;
font-family: 'Courier New' , Monospace;
bac
kground-color: #ff9933;
}
gut, oder?
Frage ist, wie ich den Notes-Code nachbauen kann? So wie ich das sehe hat der "normale" base64 nämlich [A-Za-z0-9+/=] wobei beim Notes + und = fehlen...
Wie machst Du das Base64 encoding?
Wenn ich Dein CSS-File nehme, bekomme ich mit
perl -MMIME::Base64 -0777 -ne "print encode_base64($_)" < x.css
folgendes Ergebnis:
LyoKKiBGQ0tlZGl0b3IgLSBUaGUgdGV4dCBlZGl0b3IgZm9yIGludGVybmV0CiogQ29weXJpZ2h0
IChDKSAyMDAzLTIwMDQgRnJlZGVyaWNvIENhbGRlaXJhIEtuYWJiZW4KKgoqIExpY2Vuc2VkIHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlOgoq
IGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbGdwbC1saWNlbnNlLnBocAoqCiog
Rm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24gdmlzaXQ6CiogaHR0cDovL3d3dy5mY2tlZGl0b3IubmV0
LwoqCiogRmlsZSBOYW1lOiBmY2tfZWRpdG9yYXJlYS5jc3MKKiBUaGlzIGlzIHRoZSBkZWZhdWx0
IENTUyBmaWxlIHVzZWQgYnkgdGhlIGVkaXRvciBhcmVhLiBJdCBkZWZpbmVzIHRoZQoqIGluaXRp
YWwgZm9udCBvZiB0aGUgZWRpdG9yIGFuZCBiYWNrZ3JvdW5kIGNvbG9yLgoqCiogQSB1c2VyIGNh
biBjb25maWd1cmUgdGhlIGVkaXRvciB0byB1c2UgYW5vdGhlciBDU1MgZmlsZS4gSnVzdCBjaGFu
Z2UKKiB0aGUgdmFsdWUgb2YgdGhlIEZDS0NvbmZpZy5FZGl0b3JBcmVhQ1NTIGtleSBpbiB0aGUg
Y29uZmlndXJhdGlvbgoqIGZpbGUuCioKKiBWZXJzaW9uOiAgMi4wIFJDMwoqIE1vZGlmaWVkOiAy
MDA1LTAyLTEwIDExOjQ2OjExCioKKiBGaWxlIEF1dGhvcnM6CiogRnJlZGVyaWNvIENhbGRlaXJh
IEtuYWJiZW4gKGZyZWRja0BmY2tlZGl0b3IubmV0KQoqLwoKYm9keQp7CmZvbnQtZmFtaWx5OiBB
cmlhbCwgVmVyZGFuYSwgU2Fucy1TZXJpZjsKZm9udC1zaXplOiAxMnB4OwpwYWRkaW5nOiA1cHgg
NXB4IDVweCA1cHg7Cm1hcmdpbjogMHB4Owpib3JkZXItc3R5bGU6IG5vbmU7CmJhY2tncm91bmQt
Y29sb3I6ICNmZmZmZmY7Cn0KCi5Cb2xkCnsKZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KCi5UaXRsZQp7
CmZvbnQtd2VpZ2h0OiBib2xkOwpmb250LXNpemU6IDE4cHg7CmNvbG9yOiAjY2MzMzAwOwp9Cgou
Q29kZQp7CmJvcmRlcjogIzhiNDUxMyAxcHggc29saWQ7CnBhZGRpbmctcmlnaHQ6IDVweDsKcGFk
ZGluZy1sZWZ0OiA1cHg7CmNvbG9yOiAjMDAwMDY2Owpmb250LWZhbWlseTogJ0NvdXJpZXIgTmV3
JyAsIE1vbm9zcGFjZTsKYmFja2dyb3VuZC1jb2xvcjogI2ZmOTkzMzsKfQoK
Was sich auch ohne Probleme wieder zurückverwandeln lässt.
Ich tippe daher auf ein Problem in Deiner Encoding-Routine. Schreibt die eventuell einen "Salt"-Wert an den Anfang?
Kann ich trotzdem nicht nachvollziehen.
Ich nehme ein normales Notes-Dokument. Dort hänge ich eine Textdatei an.
Inhalt der Textdatei:
Ich exportiere das Dokument in DXL.
Dort steht dann:
<item name='$FILE' summary='true' sign='true' seal='true'><object><file hosttype='msdos'
compression='none' flags='storedindoc' name='Hallo.txt'>
<created><datetime dst='true'>20050516T013633,50+02</datetime></created>
<modified><datetime dst='true'>20050516T013945,18+02</datetime></modified><filedata
>
SGFsbG8gV2VsdC4NCkHW3OT2/N8NCg==
</filedata></file></object></item>
Den Base64 - Teil (SGFsbG8gV2VsdC4NCkHW3OT2/N8NCg==) decodiere ich mit http://www.motobit.com/util/base64-decoder-encoder.asp.
Als Ergebnis erhalte ich wieder:
Beim Anhängen der Datei war "Compress" ausgewählt. Im DXL steht aber "compression='none'". Wird also wahrscheinlich beim Export entfernt.
Ich exportiere das NotesDocument via Lotus Script - nix besonderes:
Set exporter = session.CreateDXLExporter
intFilenum = Freefile
Open strPath For Output As intFilenum
Print #intFilenum, exporter.Export(doc)
Close intFilenum