buildStringBuffer method
Implementation
Future<String> buildStringBuffer(EpubBookRef epubBookRef) async {
// START BUILDING HTML CONTENT TODO: ADJUST FOR VERTICAL DIRECTION
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: column; height: 100vh; touch-action: manipulation;}'
'.vertical-container {'
' display: flex;'
' flex-direction: column;' // Vertical arrangement of elements
' overflow-y: auto;' // Enable vertical scrolling
' overflow-x: hidden;' // Disable horizontal scrolling
' width: 100%;'
' box-sizing: border-box;'
' padding: 0px !important;' // Add padding for spacing
'}'
'.vertical-container img {'
' max-width: 100%;' // Scale images to fit the container width
' margin-bottom: 0px;' // Add spacing between images
' object-fit: contain;' // Maintain image aspect ratio
'}'
'</style>'
'</head>'
'<body>'
'<div class="vertical-container">');
// LOOPING THROUGH THE CONTENT
final content = epubBookRef.Content;
final images = content?.Images;
// EMBEDDING THE 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();
// Convert binary content to Base64
final base64Data = base64Encode(imageData);
final mimeType = imageFileRef.ContentMimeType ?? 'image/*';
// Embed image in HTML
htmlBuffer.writeln(
'<img src="data:$mimeType;base64,$base64Data" alt="$imageKey" style="max-width: 100%; margin: 10px 0;" />');
//end if
}// end for loop
}
htmlBuffer.writeln('</div></body></html>');
return htmlBuffer.toString();
}