2014-02-06 52 views
0

我正在研究下载ePub文件的PHP应用程序。作为代码的一部分,我添加了一个唯一标识符,可用于跟踪数据库中的原始下载信息以打击盗版行为。保存档案评论至ePub文件

我正在使用PHP ZipArchive函数向该文件添加归档注释,但似乎Adobe Digital Edition无法在存在评论时打开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:只是为了澄清,下载正常工作和注释正确应用。只是当其他ePub读者管理良好时,ADE无法打开它。我是否以错误的方式处理它?

+0

epub DRM是否受到保护?如果是,评论可能会混淆DRM系统依赖的一些校验和,从而使布丁不在epub文件中。 – Boldewyn

+0

Hi @Boldewyn,没有ePub不受DRM保护 – JackWillDavis

回答

0

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

所以,你可以使用类似:

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

或创建一个下载类似命名的目录:

$zip->addEmptyDir($download_id); 

可能会建议是多一点混淆命名但如果你像我一样卡住:)

谢谢