buildStringBufferForHorizontal method

Future<String> buildStringBufferForHorizontal(
  1. EpubBookRef epubBookRef
)

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();
}