- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个 perl 脚本,它将从给定的父文件夹中压缩一组文件并创建一个 *.epub 文件。该过程正常,我可以在 adobe 数字版中打开 epub,但出现 epubchecker 错误:
Required MTA-INF/container.xml resource is missing
当我手动压缩文件时(我在 winxp 机器上)没有问题,但是 perl 创建的文件会抛出错误。相关代码如下:
#-------------------------------------------------------------------------------
# name : createEpub
# purpose : create an epub from a given parent folder
# args : [0] parent folder [1] name of new zip file [2] log object
# example : &createEpub( $zipLoc, 'newzip', $log);
# notes : it is assumed that mimetype, meta-inf and oebs are all child folders
# of the given parent folder
# author: : jw 2/4/13
#-------------------------------------------------------------------------------
sub createEpub(){
my ($parentFolder, $zipName, $log) = @_;
my $newZipLoc;
$parentFolder =~ s#\\#/#g;
my $newZip = Archive::Zip->new();
# add mimetype first with no compression
my $mimetype = "$parentFolder/mimetype";
my $mimetypeMember = $newZip->addFile( $mimetype, 'mimetype');
$mimetypeMember->desiredCompressionMethod( COMPRESSION_STORED );
## add web-inf
my $metaINF = $parentFolder . '/META-INF';
&addFilesToZip( $metaINF, $parentFolder, $newZip, $log);
## add OEBPS
my $oebps = $parentFolder . '/OEBPS';
&addFilesToZip( $oebps, $parentFolder, $newZip, $log );
# maybe break this out in its own func...ok for current epub script purposes
$newZipLoc = $1 if $parentFolder =~ m/(.*)\//;
$newZipLoc = $newZipLoc . '/' . $zipName;
if( $newZipLoc !~ m/\.zip/){
$newZipLoc = $newZipLoc . '.epub';
}
$log->info("writing new zip file to $newZipLoc");
$newZip->writeToFileNamed( $newZipLoc );
## not sure if this is the write thing to do...returning actual file name, not zip extract object
return $newZipLoc;
}
sub addFilesToZip(){
my ($file, $origParent, $zip, $log) = @_;
if( -d $file ){
my @children = grep{ $_ !~ m/mimetype/} glob("$file/*") or warn "can't add $file to zip! $!\n";
foreach my $child( @children ){
&addFilesToZip( $child, $origParent, $zip, $log);
}
} elsif (-f $file){
my $memPath = $file; $memPath =~ s/\Q$origParent\E//;
$log->info("adding member $memPath");
my $newMember = $zip->addFile( $file, $memPath );
}
}
当我在 winzip 中打开生成的 epub 文件时,container.xml 肯定在那里,我还确保 mimetype 是第一个没有压缩的。这是日志的摘录:
-------------------------------------------------------------------------
creating zip file from recently unzipped files
-------------------------------------------------------------------------
[ok]: adding member /META-INF/container.xml
[ok]: adding member /META-INF/stylesheet.css.kindle
[ok]: adding member /META-INF/toc.ncx.kindle
[ok]: adding member /OEBPS/content.opf
[ok]: adding member /OEBPS/coverpage.html
在谷歌搜索中,我看到人们在他们的 linux shell 命令中做了细微的改动,但我没有看到任何与 archive::zip 或 win 相关的内容。
谢谢,BP
最佳答案
从您的日志记录看来,您正在使用绝对路径在 zip 文件中创建条目。
[ok]: adding member /META-INF/container.xml
我认为 epub 文件需要是相对路径 - 尝试从要写入 zip 文件的路径中删除前导“/”。像这样的东西(未经测试)
} elsif (-f $file){
my $memPath = $file; $memPath =~ s/\Q$origParent\E//;
# remove leading "/"
$memPath =~ s#^/+##;
$log->info("adding member $memPath");
my $newMember = $zip->addFile( $file, $memPath );
}
关于perl - 使用 perl Archive::Zip 创建 *.epub -- epubchecker 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14698579/
我开发了一个基于网络的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
我是一名优秀的程序员,十分优秀!