Software Workshop

epub.js를 사용하는 방법

epub.js

적용 방법

<script src="epub.min.js"></script>		
"use strict";
var Book = ePub("text/1/", { width: 400, height: 600, spreads : false });

PHP의 기본 라이브러리를 사용하는 방법

애초 목표는 EPUB 파일의 표지와 목차 정도의 서지정보를 추출하는 것이었기 때문에 PHP의 기본 라이브러리를 이용하는 것으로 방향 전환.

XMLReader를 이용하는 방법임

  1. 우선 파일을 열고 첫줄이 PK로 시작하는지 확인함
function check_archive_file($filename) 
{
    $fp = fopen($filename);
    $line = fgets($fp);
    fclose($fp);
    if (strpos($line, "PK") !== false) {
        return true;
    }
    return false;
} 
  1. XML reader를 이용하여 EPUB 파일을 ZIP으로 간주하여 핸들링함. ZIP 파일의 경우 다음과 같은 url 패턴을 사용할 수 있음. EPUB 파일의 실제 데이터는 OEBPS 디렉토리 안에 위치함
    zip://파일경로#압축파일내부경로
$chapter1_filename = "zip://./text/epubs/" . $filename . "#OEBPS/chapter1.xhtml";
$reader = new XMLReader();
$reader->open($chapter1_filename);
while ($reader->read()) {
    print $reader->value;
}
$reader->close();

파일 경로를 적을 때 위의 예제와 같이 상대 경로로 지정하면 안 될 수 있으므로, 문제가 생기면 절대 경로로 변경해야 함

위 코드는 $reader→value를 이용해서 XHTML 파일 내의 모든 텍스트를 추출한 것이었는데 특정 엘리먼트의 값만을 추출하려면 다음과 같은 방식으로 가능함

PHP XMLReader

ZipArchive를 이용하여 읽어내는 방법

$zip = new ZipArchive();
if ($zip->open($path)) {
    $fp = $zip->getStream('OEBPS/chapter1.xhtml');
    if ($fp) {
        while (!feof($fp)) {
            $data = fread($fp, 2);
            print($data);
        }
    }
    fclose($fp);
}
$zip->close();