ScerIO / epubx.dart

Epub Reader and Writer for Dart
MIT License
40 stars 85 forks source link

Some pages may be missing in `epubBook.chapters` #26

Open shouki-s opened 7 months ago

shouki-s commented 7 months ago

In version 4.0.0 (and I think earlier as the same), some pages are missing.

Try with Sway.epub. I am comparing the view of epubx (with epub_view) and "book" (pre-installed on macosx). In epubx, Sway_copyright.html, Sway_toc.html, Sway_body_split_000.html and Sway_body_split_000.html are not showing up.

This seems to be because the .chapters are made from NCX, so items that are in Spine and not in NCX are missing.

In Spine, all xhtml files are defined.

  <spine toc="ncx">
    <itemref idref="ut8KdiaIv9Ka6BnbBwmGtD5"/> <!-- OEBPS/cover.xml -->
    <itemref idref="copyright"/> <!-- OEBPS/Sway_copyright.html -->
    <itemref idref="toc"/> <!-- OEBPS/Sway_toc.html -->
    <itemref idref="book5"/> <!-- OEBPS/Sway_body_split_000.html -->
    <itemref idref="book4"/> <!-- OEBPS/Sway_body_split_001.html -->
    <itemref idref="book3"/> <!-- OEBPS/Sway_body_split_002.html -->
    <itemref idref="book2"/> <!-- OEBPS/Sway_body_split_003.html -->
    <itemref idref="book1"/> <!-- OEBPS/Sway_body_split_004.html -->
  </spine>

However, in toc.ncx, only 3 navPoints are defined.

  <navMap>
    <navPoint class="titlepage" id="level1-titlepage" playOrder="1">
      <navLabel>
        <text>AUTHOR'S NOTE</text>
      </navLabel>
      <content src="OEBPS/Sway_body_split_002.html"/>
    </navPoint>
    <navPoint class="book" id="level1-book1" playOrder="2">
      <navLabel>
        <text>PART ONE</text>
      </navLabel>
      <content src="OEBPS/Sway_body_split_003.html"/>
      <navPoint class="chapter" id="level2-book1chap01" playOrder="3">
        <navLabel>
          <text>THE HOUSES, 1969</text>
        </navLabel>
        <content src="OEBPS/Sway_body_split_004.html"/>
      </navPoint>
    </navPoint>
  </navMap>

Currently, I believe that getting contents from chapters is dangerous due to the possibility of missing pages. Is there any solution to this problem?