首页 文章

将归档注释保存到ePub文件

提问于
浏览
0

我正在开发一个下载ePub文件的PHP应用程序 . 作为代码的一部分,我添加了一个唯一的标识符,可用于跟踪数据库中的原始下载信息以打击盗版 .

我正在使用PHP ZipArchive函数向文件添加存档注释,但是如果存在注释,Adobe Digital版本似乎无法打开ePub文件 . 当评论被删除时,它打开正常,所以我只是想看看是否有其他人之前有这个问题,如果有办法添加评论到ePub文件,这将允许Adobe Digital Editions打开它 . 以下是我正在使用的代码:

public function secureEpub($file, $download_id, $filepath){

    //GENERATE RANDOM FILE NAME
    $newFile = uniqid().".epub";
    //COPY EPUB AND WORK FROM THAT VERSION
    copy($file, $filepath.$newFile);

    //TREAT EPUB FILE AS ORDINARY ZIP ARCHIVE
    //OPEN AND EXTRACT EPUB
    $zip = new ZipArchive;
    $res = $zip->open($filepath.$newFile);
    if($res === TRUE){
        //ZIP ARCHIVE HAS OPENED SUCCESSFULLY - SET ARCHIVE COMMENT TO DOWNLOAD ID
        $zip->setArchiveComment($download_id);
        $zip->close();
    } else {
        error_log('Unable to open ePub (' . $filepath.$newFile . ') as Directory');
        return false;   
        exit;
    }
    //ONCE CHANGE HAS BEEN MADE CLOSE THE ARCHIVE AND RETURN TEMP FILE
    return $filepath.$newFile;

}

如您所见,它会复制原始文件,创建一个存档注释,然后返回该文件(稍后会删除) . 有没有办法在不破坏ePub(ADE)的情况下实现这一目标?

如果我没有任何意义,请告诉我:D

P.S:只是为了澄清,下载工作正常,评论正确应用 . 只是ADE无法打开它,而其他ePub阅读器管理得很好 . 我是以错误的方式去做的吗?

1 回答

  • 0

    好吧,我找不到解决方法,所以我想出了一个解决方案 . 您可以在ZIP文件中添加包含详细信息的新文件或目录 .

    所以,你可以使用类似的东西:

    $zip->addFromString('test.txt', $download_id);
    

    或者创建一个以下载后命名的目录:

    $zip->addEmptyDir($download_id);
    

    如果你像我一样卡住,可能会建议用命名更加模糊一些:)

    谢谢

相关问题