...
// sEPubFilename ist der "Datei"-Name, unter dem der Stream im Zip-Archiv abgelegt wird.
// Einen String, der eine vollständige Datei (HTML-Seite...) repäsentiert,
// in die EPub-Datei übernehmen.
function CopyToEPub(sInhalt :
String; sEPubFilename :
String) : Boolean;
overload;
// Inhalt einer Stringliste als Datei in die EPub-Datei übernehmen.
function CopyToEPub(sl : TStrings; sEPubFilename :
String) : Boolean;
overload;
// Einen Stream als Datei in die EPub-Datei übernehmen.
// Hierbei kann es sich um alles handeln, was man in eine ZIP-Datei packen kann.
function CopyToEPub(st : TMemoryStream; sEPubFilename :
String) : Boolean;
overload;
...
...
// Wir bekommen eine Zeichenfolge, die eine vollständige Seite enthält.
function TEPub.CopyToEPub(sInhalt :
String; sEPubFilename :
String) : Boolean;
var
sl : TStringList;
st : TMemoryStream;
begin
sl := TStringList.Create;
st := TMemoryStream.Create;
try
sl.Add(sInhalt);
sl.SaveToStream(st);
Result := CopyToEPub(st,sEPubFilename);
finally
st.Free;
sl.Free;
end;
end;
// Wir bekommen eine Stringliste, die eine vollständige Seite enthält.
function TEPub.CopyToEPub(sl : TStrings; sEPubFilename :
String) : Boolean;
var
st : TMemoryStream;
begin
st := TMemoryStream.Create;
try
sl.SaveToStream(st);
Result := CopyToEPub(st,sEPubFilename);
finally
st.Free;
end;
end;
// Die Übernahme in das eBook kann nur per Stream erfolgen.
// Wir bekommen hier einen Stream, der eine vollständige Seite enthält.
// Es kann sich aber auch um Bilder... handeln, halt alles, was man in ein
// Zip packen kann.
function TEPub.CopyToEPub(st : TMemoryStream; sEPubFilename :
String) : Boolean;
begin
Result := false;
if Assigned(fOnEPubMessage)
then fOnEPubMessage(Self, Format('
speichere %s...',[sEPubFileName]));
Application.ProcessMessages;
try
try
st.Position := 0;
fZip.ZipStream.LoadFromStream(st);
fZip.AddStreamToFile(sEPubFilename,0,FILE_ATTRIBUTE_ARCHIVE);
st.Clear;
Result := True;
if Assigned(fOnEPubStatus)
then fOnEPubStatus(Self, Format('
%s wurde gespeichert.',[sEPubFileName]));
except
on e :
Exception do begin
if Assigned(fOnEPubException)
then fOnEPubException(Self,'
CopyToEPub: ' + e.
Message)
else raise Exception.Create(e.
Message) at @TEPub.CopyToEPub;
end;
end;
finally
end;
Application.ProcessMessages;
end;
...