buildStringBufferForHorizontal method
Implementation
Future<String> buildStringBufferForHorizontal (EpubBookRef epubBookRef) async {
final htmlBuffer = StringBuffer(
'<html lang="en">'
'<head>'
'<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes, maximum-scale=5">'
'<style>'
'body { margin: 0; padding: 0; overflow: hidden; display: flex; flex-direction: row; touch-action: manipulation; }'
'.horizontal-container {'
' display: flex;'
' flex-direction: row;'
' overflow-x: auto;'
' white-space: nowrap;'
' align-items: center;'
' height: 100vh;'
' box-sizing: border-box;'
'}'
'.horizontal-container img {'
' max-height: 100%;'
' margin: 0 0px !important;'
' object-fit: contain;'
' padding: 0px;'
'}'
'</style>'
'</head>'
'<body>'
'<div class="horizontal-container">');
// Loop through images and embed them
final content = epubBookRef.Content;
final images = content?.Images;
if (images != null) {
for (final imageEntry in images.entries) {
final imageKey = imageEntry.key;
final imageFileRef = imageEntry.value;
// Read binary data
final imageData = await imageFileRef.readContentAsBytes();
final base64Data = base64Encode(imageData);
final mimeType = imageFileRef.ContentMimeType ?? 'image/*';
// Embed image in HTML
htmlBuffer.writeln(
'<img src="data:$mimeType;base64,$base64Data" alt="$imageKey" />');
}
}
htmlBuffer.writeln('</div></body></html>');
return htmlBuffer.toString();
}