Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

苹果 ibooks 图书应用 epub 阅读异常 #85

Open
IronKinoko opened this issue Jun 7, 2024 · 6 comments
Open

苹果 ibooks 图书应用 epub 阅读异常 #85

IronKinoko opened this issue Jun 7, 2024 · 6 comments

Comments

@IronKinoko
Copy link
Contributor

IronKinoko commented Jun 7, 2024

异常情况

1. epub下载后发现内容异常,表现为每章只显示第一页

原因

经过对比源文件与网站生成的文件,发现 content.opf 文件的<metadata> 里的值都被格式化换行了

<!-- 源文件 -->
<dc:language>ja</dc:language>
<!-- 网站生成的文件 -->
<dc:language>
  ja
</dc:language>

我逐个排查后发现 ibooks 对格式化后的 <dc:language> 适配异常,最终导致渲染异常

解决方案

别格式化输出xml

2. css文件没有输出内容

这个表现为源文件里的css内容没生成出来,造成部分小说原本样式丢失

3. 竖向右至左读排版异常

这个表现是源文件里 <metadata> 中包含了 <meta name="primary-writing-mode" content="vertical-rl"/> 属性,生成的文件中 <spine> 缺少了 page-progression-direction="rtl" 属性,导致翻页是从左往右

content.opt 文件

<metadata>
  <meta name="primary-writing-mode" content="vertical-rl"/>
</metadata>

- <spine toc="ncx">
+ <spine toc="ncx" page-progression-direction="rtl">

竖版右往左读还需要配合css实现(目前css文件没有输出内容)

修复前后对比

  • 去掉metadata前后换行
  • 把源文件中的css复制过来
  • 把spine缺失的属性加上

修复前:页码显示不全,丢失原本排版
image

修复后:
image

附件

源文件.zip
网站下载文件.zip

@FishHawk
Copy link
Owner

FishHawk commented Jun 9, 2024

文库小说我还没有想好。考虑到之后要做在线阅读,是不是该进一步解析文章内容,提取目录和章节,然后从文本重新生成epub小说呢?

竖版转横版倒是刻意为之了,绝大多数亚马逊买书上传的用户,都想要看横版的书。

@IronKinoko
Copy link
Contributor Author

比较急需解决的是问题1,苹果设备显示异常。
输出的时候前后换行去掉

竖版放着吧,手机上竖版排布日+中,一页看不了几句话

@FishHawk
Copy link
Owner

问题1修了,暂时把格式化关了,等jsoup那边看看怎么说。
jhy/jsoup#2141

@gitboy14
Copy link

gitboy14 commented Aug 16, 2024

截屏2024-08-16 16 35 39

在下载时发现问题似乎并没有被解决,原因不明。可以按照IronKinoko的方法手动解决,不确定是否在所有书籍上都会发生。同时部分版本的iBooks修复了识别问题,但仍然有会触发此问题的最新os版本设备。

@FishHawk
Copy link
Owner

在下载时发现问题似乎并没有被解决,原因不明。可以按照IronKinoko的方法手动解决,不确定是否在所有书籍上都会发生。同时部分版本的iBooks修复了识别问题,但仍然有会触发此问题的最新os版本设备。

有可能是服务器缓存的旧文件。试试随便点下翻译,再下载,触发下重新生成文件。

@gitboy14
Copy link

gitboy14 commented Aug 16, 2024

有可能是服务器缓存的旧文件。试试随便点下翻译,再下载,触发下重新生成文件。

谢谢你的帮助。但是在尝试过之后问题依然存在。而且确认了,大部分其他书籍没有此问题。
截屏2024-08-16 20 37 01
截屏2024-08-16 20 39 20

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants