gpt4 book ai didi

javascript - 更改字体时基于页面的加载 epub

转载 作者:可可西里 更新时间:2023-11-01 04:34:58 25 4
gpt4 key购买 nike

我正在做像 iBooks 这样的电子书阅读器应用程序。我已成功读取 .epub 文件。但我的问题是:-

我必须添加字体大小增加和减少以及字体更改功能。当我增大和减小字体大小时,我必须调整页面。如何拆分页面中的 HTML 字符串? .

您可以在两张图片中看到。更改字体大小后,html 字符串被分开并且格式被折叠。

提前致谢

enter image description here enter image description here

最佳答案

好吧,这真的是一个很难的问题......

我有一个将 HTML 页面分成两部分的方法的想法:第一页和其余部分。然后您可以在“rest”上重复调用该方法以获取所有页面。

  1. 设置 $num_words = 100
  2. 从页面中取出前 $num_words 个单词 => $first_page_html;
  3. 将 $first_page_html 放入 UIWebView 并“呈现”它(参见下面的注释)。
  4. 检查 UIWebView 的高度。合身吗?如果是,从算法返回。
  5. 如果单词不适合 UIWebView,执行 $num_words--;
  6. 否则,执行 $num_words++;
  7. 转到 2

这是第一个应该以某种方式工作的算法。但是,其中存在优化机会和隐藏问题:

您可能应该执行类似二分查找的操作,而不是线性查找。所以 $num_words 不应该是 100, 99, 98, 97, 96, ..., 62,而是 100, 80, 60, 70, 65, 64, 63, 62。问 webview how 会更快它比预期的大或小。 IE。如果 webview 的高度大了 30%,这意味着你应该将它减少 (1-1/(1+30%))=23%,所以你应该在第一步中将字数乘以 0.77 .

当文档中存在硬分页符时,您的函数应考虑到这一点。

您可以通过调用 webView.scrollView.contentSize.height 获取 UIWebView 的高度。我认为您必须等待 UIWebView 完成渲染才能检查高度。

如果您对 HTML 的结构了解更多,您可以使用 UIWebView 中的 -stringByEvaluatingJavaScriptFromString: 方法添加单个单词并查看会发生什么。这样 webview 就不必一直重新渲染所有内容。

注意:“呈现”是指调用 -loadHTMLString:baseURL:,然后等待调用 -webViewDidFinishLoad: 委托(delegate)方法。

如果性能是一个问题,那么以某种方式用 Javascript 编码这个算法可能会更快(对于设备),但我认为这会更难。

关于javascript - 更改字体时基于页面的加载 epub,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22929378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com