질문/조언질답게시판
<?php

if(!defined('__XE__')) exit();

if($called_position != 'after_module_proc' || Context::getResponseMethod() != 'HTML' || $this->act != 'dispBoardContent') return;

// 문서 정보 로드
if(Context::get('document_srl')) {
$oDocument = Context::get('oDocument');
} else {
$oDocumentModel = getModel('document');
$args = new stdClass();
$args->list_count = $this->list_count;
$args->module_srl = $this->module_srl;
$args->page = Context::get('page');
$output = $oDocumentModel->getDocumentList($args, true);
$document_list = array_values($output->data);
$oDocument = $document_list[0];
unset($document_list);
}
if(!$oDocument->document_srl) return;

// 문서 파일 추룰
if($oDocument->hasUploadedFiles()){
$srl = []; $ext = []; $get = []; $url = []; 
$format = array('pdf','txt', 'tif', 'tiff', 'doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx','epub');
foreach($oDocument->getUploadedFiles() as $key => $file){
$uploaded_filename = $file->uploaded_filename;
$filename = $file->source_filename;
$extension = preg_replace('/^.*\.([^.]+)$/D', '$1', $filename);
$_ext = explode('.', strtolower($filename));
$_ext = $_ext[count($_ext)-1];
     if(in_array($_ext, $format)) {
$srl[] = $file->file_srl;
$ext[] = $_ext;
$get[$key] = urlencode(getUrl().'addons/ap_viewer/ap_viewer.php?uploaded_filename='._XE_PATH_.str_replace("./","",$uploaded_filename).'&filename='.$filename);
$getepub[$key] = urlencode(getUrl().''.str_replace("./","",$uploaded_filename));


switch ($extension) {
case pdf:
                    $url[] = 'https://4880.net/pdfjs/web/viewer.html?file=' . $get[$key];
                    if(!array_intersect($ext, $format)) return;
                $ap_viewer_script .= "
                var viewer_srl = '" . join(" | ",$srl) . "';
                var viewer_ext = '" . join(" | ",$ext) . "';
                var viewer_url = '" . join(" | ",$url) . "';
                ";
break;
case epub:
 $url[]='https://4880.net/addons/ap_viewer/epubjs/reader/index.php?filename=https://s3.amazonaws.com/moby-dick/moby-dick.epub';
//$url[]='https://4880.net/addons/ap_viewer/epubjs/reader/index.php?filename='. $getepub[$key];
if(!array_intersect($ext, $format)) return;

                $ap_viewer_script .= "
   var viewer_srl = '" . join(" | ",$srl) . "';
var viewer_ext = '" . join(" | ",$ext) . "';
var viewer_url = '" . join(" | ",$url) . "';
";
break;
default:
$url[] = 'https://drive.google.com/viewerng/viewer?embedded=true&url=' . $get[$key];
if(!array_intersect($ext, $format)) return;

                    $ap_viewer_script .= "
                var viewer_srl = '" . join(" | ",$srl) . "';
                var viewer_ext = '" . join(" | ",$ext) . "';
                var viewer_url = '" . join(" | ",$url) . "';
                ";
}
}
}

} else return;

// 변수 정리
$option = $addon_info->option;
$rprsnt = $addon_info->rprsnt;
if(!$option || !is_numeric($option)) $option = 1;
if(!$rprsnt || !is_numeric($rprsnt)) $rprsnt = 1;

Context::addHtmlHeader('<script>' . $ap_viewer_script . ' var viewer_option = ' . $option . '; var viewer_rprsnt = ' . $rprsnt . ';</script>');
Context::loadFile(array('./addons/ap_viewer/js/ap_viewer.js', 'body', '', null), true);
//Context::loadFile(array('./epubjs/libs/jszip/jszip.min.js', 'body', '', null), true);
?>

 

epub 뷰어 애드온을 만들고 있는데 도움을 받고자 합니다.

51번 줄에서 확장자 epub 으로 업로드된 파일의 상대경로를 알고자 합니다.

검색해보니 쉬운게 아니더군요 . 

참고사이트 

https://4880.net/elib/207378

 

https://terzeron.com/confluence/pages/viewpage.action?pageId=6455298

 

 

TAG •
  • profile

    변경전

    $url[]='https://4880.net/addons/ap_viewer/epubjs/reader/index.php?filename=https://s3.amazonaws.com/moby-dick/moby-dick.epub';

     

    변경후

    $epubSiteUrl = getNotEncodedFullUrl('');
    $epubFilePath = str_replace("./","",$file->uploaded_filename);
    $epubFullUrl = $epubSiteUrl.$epubFilePath;

    $url[] = $epubSiteUrl.'addons/ap_viewer/epubjs/reader/index.php?filename='.urlencode($epubFullUrl);

  • profile profile

    20200117_083423.png

    와우 구름이님 최고 !! 근대 

    마지막에 확장자 epub 들어가야  epub.js에서 렌더링 하게 되었있는데 원래 대로 /173/378/207/111.epub 처럼 할수없나요?

  • profile profile

    그렇게 하시려면 몇가지 방법이 있습니다.
    간단하게 한가지 예를 들자면 .. 아래와 같은 방법이 있겠습니다.

     

    1.url 변경

    $url[] = $epubSiteUrl.'addons/ap_viewer/filedown.php?file_srl='.$file->file_srl.'.epub';

     

    $epubFullUrl = $epubSiteUrl.'epubs/'.$file->file_srl.'.epub';

    $url[] = $epubSiteUrl.'addons/ap_viewer/epubjs/reader/index.php?filename='.urlencode($epubFullUrl);

    아래 댓글 .htaccess 룰 추가

     

    2.addons/ap_viewer/filedown.php 파일 생성

    <?php
    ini_set("display_errors", 0);
    $file_srl = preg_replace("/[^0-9]*/s", "", $_GET['file_srl']);
    if($file_srl == "") exit;


    define('__XE__',   TRUE);
    define('__ZBXE__', TRUE);
    require_once('../../config/config.inc.php');

     

    $oContext = &Context::getInstance();
    $oContext->init();

     

    $oFileModel = getModel('file');
    $fInfo = $oFileModel->getFile($file_srl);

    $view_filename = $fInfo->source_filename;
    $filePath = _XE_PATH_.str_replace("./","",$fInfo->uploaded_filename);

     

    header('Pragma: public');
    header('Expires: 0');
    header('Content-Type: application/x-octetstream');
    header('Content-Length: '.filesize($filePath));
    header('Content-Disposition: attachment; filename='.$view_filename);
    header('Content-Transfer-Encoding: binary');

    ob_clean();
    flush();
    readfile($filePath);
    ?>

    테스트는 못해봤습니다.

    오류가 발생되면 로그 참고하셔서 수정하시길..

  • profile profile

    1.url 변경

    $url[] = $epubSiteUrl.'addons/ap_viewer/filedown.php?file_srl='.$file->file_srl.'.epub';

    $epubFullUrl = $epubSiteUrl.'addons/ap_viewer/filedown.php?file_srl='.$file->file_srl.'.epub';
    $url[] = $epubSiteUrl.'addons/ap_viewer/epubjs/reader/index.php?filename='.urlencode($epubFullUrl);

     


     

    $epubFullUrl 을 사이트URL/짧은주소/file_srl.epub 처럼 하려면 .htaccess 를 수정하셔야합니다.

     

    1. .htaccess 추가

    RewriteRule ^epubs/.+\.(epub)$ ./addons/ap_viewer/filedown.php?file_srl=$0 [L]

     

    2. URL 변경

    $epubFullUrl = $epubSiteUrl.'epubs/'.$file->file_srl.'.epub';

    $url[] = $epubSiteUrl.'addons/ap_viewer/epubjs/reader/index.php?filename='.urlencode($epubFullUrl);

  • profile profile
    오우 정말 감사합니다. 해보고 알려드릴게요!!
  • profile

    20200117_101432.png

     

    /epubs 폴더에 파일이 다운로드가 되지 않네요...!!! ㅜㅜ 요렇게 나옵니다.

  • profile
    $epubSiteUrl = getNotEncodedFullUrl('');

     

    요걸 빼먹었군요 .. ㅎㅎ 잘됩니다. 감사합니다. 참 구름이님  이 애드온 배포 해도 되나요?

     

  • profile profile
    물론입니다.
    유용한 애드온이 되길 바랍니다.
    감사합니다.
  • profile
    오 배포해주시나요? ^^
  • profile
    클릭시 팝업되는 책뷰어는 어떤걸 사용하신건가요? 제작 하신거가요?
  • profile profile
    https://terzeron.com/confluence/pages/viewpage.action?pageId=6455298 요기 참고

서버에 요청 중입니다. 잠시만 기다려 주십시오...