- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Paul Siegmann 的库制作一个 EPub 阅读器 http://www.siegmann.nl/epublib/android
我将目录提取到 ListView
中,该项目链接到显示所选章节内容的 WebView
。
我没有发现显示只有纯文本元素的E-Pub文件有任何问题,但是当涉及到包含Html元素(链接,图像)的E-Pub文件时,它无法显示。
有人知道如何根据我的情况在 WebView 上渲染 Html 元素吗?
这是我的类(class):
public class EPubReaderActivity extends ListActivity
{
private LayoutInflater inflater;
private List<RowData> contentDetails;
public static final String BOOK_NAME = "ferring.epub";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
inflater = (LayoutInflater) getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
contentDetails = new ArrayList<RowData>();
AssetManager assetManager = getAssets();
try {
InputStream epubInputStream = assetManager.open(BOOK_NAME);
Book book = (new EpubReader()).readEpub(epubInputStream);
logContentsTable(book.getTableOfContents().getTocReferences(), 0);
} catch (IOException e) {
Log.e("epublib", e.getMessage());
}
CustomAdapter adapter = new CustomAdapter(this, R.layout.list,
R.id.title, contentDetails);
setListAdapter(adapter);
getListView().setTextFilterEnabled(true);
}
private class CustomAdapter extends ArrayAdapter<RowData>{
public CustomAdapter(Context context, int resource,
int textViewResourceId, List<RowData> objects) {
super(context, resource, textViewResourceId, objects);
}
private class ViewHolder{
private View row;
private TextView titleHolder = null;
public ViewHolder(View row) {
super();
this.row = row;
}
public TextView getTitle() {
if(null == titleHolder)
titleHolder = (TextView) row.findViewById(R.id.title);
return titleHolder;
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
TextView title = null;
RowData rowData = getItem(position);
if(null == convertView){
convertView = inflater.inflate(R.layout.list, null);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
}
holder = (ViewHolder) convertView.getTag();
title = holder.getTitle();
title.setText(rowData.getTitle());
return convertView;
}
}
private void logContentsTable(List<TOCReference> tocReferences, int depth) {
if (tocReferences == null) {
return;
}
for (TOCReference tocReference:tocReferences) {
StringBuilder tocString = new StringBuilder();
for (int i = 0; i < depth; i++) {
tocString.append("\t");
}
tocString.append(tocReference.getTitle());
RowData row = new RowData();
row.setTitle(tocString.toString());
row.setResource(tocReference.getResource());
contentDetails.add(row);
logContentsTable(tocReference.getChildren(), depth + 1);
}
}
private class RowData{
private String title;
private Resource resource;
public RowData() {
super();
}
public String getTitle() {
return title;
}
public Resource getResource() {
return resource;
}
public void setTitle(String title) {
this.title = title;
}
public void setResource(Resource resource) {
this.resource = resource;
}
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
RowData rowData = contentDetails.get(position);
Intent intent = new Intent(EPubReaderActivity.this, ContentViewActivity.class);
try {
intent.putExtra("display", new String(rowData.getResource().getData()));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
startActivity(intent);
}
}
内容类:
public class ContentViewActivity extends Activity {
WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.content);
webView = (WebView) findViewById(R.id.web);
webView.getSettings().setJavaScriptEnabled(true);
String displayString = getIntent().getExtras().getString("display");
if(displayString != null)
webView.loadData(displayString, "text/html", "utf-8");
}
}
P.S:我不想使用 PageTurner (http://www.pageturner-reader.org/) 或 FBReader (http://www.fbreader.org/FBReaderJ),因为它们都需要 GPL 许可商业用途。
最佳答案
实际上,PageTurner 的 Html 呈现部分被拆分成一个单独的库,该库已获得 Apache 许可。
我专门这样做是因为我认为它对商业项目也很有用。
关于android - 在 EPub 阅读器的 WebView 上呈现 Html 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10882972/
我开发了一个基于网络的e pub阅读器,我想添加一个评论功能,例如adobe PDF阅读器评论功能,这样如果我在其他e中打开该e pub,评论应该保存在e pub中酒吧读者我可以看到评论。 最佳答案
我使用 .NET 中的 ZipArchive 编写了一个 ePub 生成器,并查看了规范(在 Wikipedia 中)和一个示例。 这行不通!但我只收到一个一般性错误,所以我无法从这里修复任何东西。
我正在使用最优秀的 PHP 库 ePub从存储在我的数据库中的 HTML 即时创建数字图书。 因为这些是合集的一部分,所以我为每本书都附上了封面图片。代码中一切正常,但根据解释 ePub 的设备/软件
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 9 年前。 Improve
我有一堆 EPUB 书籍,如果我有 Kindle,我必须将它们转换为 MOBI。我想知道在从 EPUB 到 MOBI 的转换过程中是否一定会丢失任何细节(例如元数据、布局信息),反之亦然,类似于 MP
我正在尝试制作双语电子书。我希望它排版成两列,一种语言在左边,另一种在右边。 这可能与 epub 规范有关吗? 最佳答案 这是很有可能的,有两种不同的方式: 列(由 wikisource epub e
我制作了一个应用程序,其中我实现了 ePub 阅读器,它可以解压缩文件并解析 xml 文件。我在S.O.上采用了这个问题的方法。 Reading ePub format . 在我用客户端的更新文件替换
我正在开发EPUB 阅读器。我想了解一些与市场上其他 EPUB 阅读器相关的信息(例如 Cool reader、FBReader、Amazon Kindle 等等)。 他们使用什么类型的 View 来
是否有任何编程方法可以安全地检查 epub 文件是否受 DRM 保护(加密)? 我发现 META-INF 目录中可能有一个 rights.xml 和一个 encryption.xml。 这些文件中的任
我正在使用 pandoc 作为创建 epub 书籍的一种方式。它通过检测书中的所有 H1 标签自动创建目录。这很有效,只是每个 epub 都有一个指向标题页的 TOC 链接,这是我不需要的。 我如何摆
我正在 iPhone 上开发一个简单的 epub 阅读器,但一直想知道如何加载它。我知道阅读 PDF 等文件有些简单,因为它本身就是一个文件,可以使用 UIWebView 或 CoreGraphics
我正在使用 https://github.com/augustl/js-epub解析 .epub 文件。但我得到错误“XML 解析错误:未找到元素”。我在第 3 步之前没有遇到问题,它在后处理步骤中失
我对如何实现 epub.js 感到困惑。 ( https://github.com/futurepress/epub.js/blob/master/documentation/README.md )
我正在开发 ibook 应用程序之类的 iphone 应用程序。我加载了 UIWebView 中解析 epub 文件后获得的 XML 文件的内容。我更改了字体大小 & UIWebView 内容的字体系
刚开始使用 FuturePress/epub.js。并与 vue.js 一起使用 ‹ ›
我正在尝试将 epub 文件解析为 UIWebView。我解析成功了。但我无法设置字体大小。意味着当点击 epub 文件页面时,字体需要增加。我添加了 UISearchBar,但如果我输入文本,它就无
我正在使用 Pandoc 将 Markdown 文件转换为 ePub。我可以使用 --template 选项自定义自动生成的标题页。 现在我正在尝试对自动生成的目录执行相同的操作。这可能吗? 我可以使
我想使用动态 html 作为源创建类似于 epub/ebook 阅读器(如 Kindle 应用程序或 iBooks)的响应式、移动优化阅读体验。 想象一下需要大量垂直滚动才能阅读的长篇文章或博客文章,
在流行的桌面电子书查看器(如 calibre、FBreader 或 Cool Reader)中,我缺少一项功能,即以与打印版电子书相同的页码显示电子书。有些人(也在这里)声称 epub 没有页面概念(
Apple 对 ePub 3 脚注的支持详见 Liz Castro . 简而言之,如果脚注链接有 epub:tupe="noteref"格式: 1 脚注文本位于 用 epub:type="footno
我是一名优秀的程序员,十分优秀!