테스트 사이트 - 개발 중인 베타 버전입니다

게시판 PDF 첨부파일 - 첫페이지 미리보기 뷰어 문의

위너즈 2년 전 조회 1,946

게시판 PDF 첨부파일 - 첫페이지만 미리보기 뷰어 문의입니다.

 

구글링하다가 어떤분이 포스팅 하신걸 봤는데..

적용했을 때 글 본문이 아니라 하단에 깨짐 형태로 박스만 나타나고 이미지 출력이 안돼서

도저히 답이 안나와서 여쭤봅니다

 

■ 내가 시도 해본 결과

1. skin / board / 스킨명 / view.skin.php 여기다가

<?php
// pdf 파일 체크 후 pdf 파일이 존재하면 뷰어로 출력
$view_file_ext = substr(strrchr($view['file'][$i]['file'], '.'), 1); // $view['file'][$i]['source']로 해도 될듯
if ($view_file_ext == "pdf") {
    echo "<iframe class='bo_v_pdf_viewer' src='".$board_skin_url."/pdfjs/web/viewer.html?file=".$view['file'][$i]['path']."/".$view['file'][$i]['file']."'></iframe>";
}
?>

2. skin / board / 스킨명 /style css 여기다가

/* pdf.js로 pdf파일 출력 */

#bo_v .bo_v_pdf_viewer {}

 

이렇게 넣었는데,  엉뚱한 위치에 뷰어가 아니라 깨진 상태로 나타났습니다.

 

 

─────────────────────────────────────────────

 

※ 참조 - 포스팅 참조 글 (링크도 첨부했습니다)  ▼▼▼▼▼▼▼▼

아래 블로그에 보면 압축 파일도 있었는데

에디터 플러스에 함부로 붙여 넣기하면 망할거 같아서 위에 소스만 넣었습니다.

 

그리고, 아래 글은 PDF 전체를 볼 수 있는듯 한데, 저는 첫페이지만 미리보기용으로 하고 싶습니다!

 

 

도움 주시면 정말 감사하겠습니다  !!!

도움 주시면 정말 감사하겠습니다  !!!

도움 주시면 정말 감사하겠습니다  !!!

도움 주시면 정말 감사하겠습니다  !!!

 

** 아래는 현재 저의 홈페이지 적용 된 소스입니다 ** 

 

[code]<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
include_once(G5_LIB_PATH.'/thumbnail.lib.php');

// SyntaxHighLighter
if(isset($boset['na_code']) && $boset['na_code'])
    na_script('code');

// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
add_stylesheet('<link rel="stylesheet" href="'.$board_skin_url.'/style.css">', 0);

// SEO 이미지
$view['seo_img'] = na_wr_img($bo_table, $view);

// SEO 등과 공용사용
$view_subject = get_text($view['wr_subject']);

// 테마 게시물 타이틀
$is_post_title = (isset($is_post_title) && $is_post_title) ? true : false;
?>

<script src="<?php echo G5_JS_URL; ?>/viewimageresize.js"></script>
<style>
    .tit{font-size: 32px;font-weight: bold;margin: 45px 0;}
    .na-table-head{background: #f3f4f5;border-top : 1px solid #000 !important;border-bottom: 1px solid #cdcccc !important;}
   
</style>
<!-- 게시물 읽기 시작 { -->
<article id="bo_v" class="mb-4">
<div class="tit"><?php echo $board['bo_subject'] ?></div>

    <?php if(!$is_post_title) { // 페이지 타이틀 미사용 ?>
        <header class="font-weight-normal mb-2 px-3 px-sm-0">
            
            
            <?php if ($category_name) { ?>
                <div class="f-sm text-muted">
                    
                    <span class="sr-only">분류</span>
                </div>
            <?php } ?>
            
            <h1 id="bo_v_title">
                <?php echo $view['ca_name'] ?> | <?=$view['wr_1']?> | <?=$view['wr_2']?> <?php echo $view_subject; // 글제목 출력 ?>
            </h1>
        </header>
    <?php } ?>

    <section id="bo_v_info" class="f-sm font-weight-normal mb-3 mb-sm-4">
        <div class="clearfix <?php echo ($is_post_title) ? 'border-bottom' : 'bg-light border-top'; ?> text-muted px-3 py-2">
            <h3 class="sr-only">작성자 정보</h3>
            <ul class="d-flex align-items-center">
                <li class="pr-2">
                    <?
                    $sql = "select * from g5_member where mb_id='{$view['mb_id']}'";
                    $info = sql_fetch($sql);
                    $level = $info[mb_level];

                    if($info[mb_level] >= 9){}else{    
                    ?>

                    <img src="/img/grade_icon<?=$level?>.png" alt="" width="20" height="20">
                    <?}?>
                    <?php echo na_name_photo($view['mb_id'], $view['name']); ?>
                    <span class="sr-only">작성</span>
                </li>
                <?php if ($is_ip_view) { ?>
                    <li class="pr-2">
                        <span class="f-xs text-muted"><?php echo $ip ?></span>
                        <span class="sr-only">아이피</span>
                    </li>
                <?php } ?>
                <li class="flex-grow-1 text-right">
                    <?php if($is_post_title && $category_name) { // 페이지 타이틀 사용시 ?>
                        <div class="f-sm text-muted">
                            <?php echo $view['ca_name'] ?>
                            <span class="sr-only">분류</span>
                        </div>
                    <?php } else { ?>
                        <span class="sr-only">작성일</span>
                        <time class="f-xs" datetime="<?php echo date('Y-m-d\TH:i:s+09:00', strtotime($view['wr_datetime'])) ?>"><?php echo date("Y.m.d", strtotime($view['wr_datetime'])) ?></time>
                    <?php } ?>
                </li>
            </ul>
        </div>

        <div class="clearfix f-sm text-muted px-3 pt-2">
            <h3 class="sr-only">컨텐츠 정보</h3>
            <ul class="d-flex align-items-center">
                <li class="pr-3">
                    <!--i class="fa fa-eye" aria-hidden="true"></i>
                    <?php echo number_format($view['wr_hit']) ?>
                    <span class="sr-only">조회</span-->
                </li>
                <?php if($view['wr_comment']) { ?>
                    <li class="pr-3">
                        <i class="fa fa-commenting-o" aria-hidden="true"></i>
                        <?php echo number_format($view['wr_comment']) ?>
                        <span class="sr-only">댓글</span>
                    </li>
                <?php } ?>
                <?php if ($board['bo_use_good']) { // 추천 ?>
                    <li class="pr-3">
                        <i class="fa fa-thumbs-o-up" aria-hidden="true"></i>
                        <span class="wr_good_cnt"><?php echo number_format($view['wr_good']) ?></span>
                        <span class="sr-only">추천</span>
                    </li>
                <?php } ?>
                <?php if ($board['bo_use_nogood']) { // 비추천 ?>
                    <li class="pr-3">
                        <i class="fa fa-thumbs-o-down" aria-hidden="true"></i>
                        <span class="wr_nogood_cnt"><?php echo number_format($view['wr_nogood']) ?></span>
                        <span class="sr-only">비추천</span>
                    </li>
                <?php } ?>
                <li id="bo_v_btn" class="d-none d-sm-block flex-sm-grow-1 text-right">
                    <!-- 게시물 상단 버튼 시작 { -->
                    
                    <?php ob_start(); ?>

                    <a href="<?php echo $list_href ?>" class="btn btn_b01 nofocus p-1 ml-2" role="button">
                        <i class="fa fa-bars" aria-hidden="true"></i>
                        목록
                    </a>
                    <?php if($update_href || $delete_href || $copy_href || $move_href || $search_href) { ?>
                        <div class="btn-group" role="group">
                            <button type="button" class="btn btn_b01 nofocus dropdown-toggle dropdown-toggle-empty dropdown-toggle-split p-1 ml-2" data-toggle="dropdown" data-display="static" aria-haspopup="true" aria-expanded="false">
                                <i class="fa fa-cog" aria-hidden="true"></i>
                                관리
                            </button>
                            <div class="dropdown-menu dropdown-menu-right p-0 border-0 bg-transparent text-right">
                                <div class="btn-group-vertical">
                                <?php if ($update_href) { ?>
                                    <a href="<?php echo $update_href ?>" class="btn btn-primary py-2" role="button">
                                        <i class="fa fa-pencil-square-o fa-fw" aria-hidden="true"></i>
                                        글수정
                                    </a>
                                <?php } ?>
                                <?php if ($delete_href) { ?>
                                    <a href="<?php echo $delete_href ?>" onclick="del(this.href); return false;" class="btn btn-primary py-2" role="button">
                                        <i class="fa fa-trash-o fa-fw" aria-hidden="true"></i>
                                        글삭제
                                    </a>
                                <?php } ?>
                                <?php if ($copy_href) { ?>
                                    <a href="<?php echo $copy_href ?>" onclick="board_move(this.href); return false;" class="btn btn-primary py-2" role="button">
                                        <i class="fa fa-files-o fa-fw" aria-hidden="true"></i>
                                        글복사        
                                    </a>
                                <?php } ?>
                                <?php if ($move_href) { ?>
                                    <a href="<?php echo $move_href ?>" onclick="board_move(this.href); return false;" class="btn btn-primary py-2" role="button">
                                        <i class="fa fa-arrows fa-fw" aria-hidden="true"></i>
                                        글이동
                                    </a>
                                <?php } ?>
                                <?php if ($search_href) { ?>
                                    <a href="<?php echo $search_href ?>" class="btn btn-primary py-2" role="button">
                                        <i class="fa fa-search fa-fw" aria-hidden="true"></i>
                                        글검색
                                    </a>
                                <?php } ?>
                                </div> 
                            </div>
                        </div>
                    <?php } ?>
                    <?php if ($reply_href) { ?>
                        <a href="<?php echo $reply_href ?>" class="btn btn_b01 nofocus p-1 ml-2" role="button">
                            <i class="fa fa-reply" aria-hidden="true"></i>
                            답글
                        </a>
                    <?php } ?>
                    <?php if ($write_href) { ?>
                        <a href="<?php echo $write_href ?>" class="btn btn-primary nofocus py-1 ml-2" role="button">
                            <i class="fa fa-pencil" aria-hidden="true"></i>
                            쓰기
                        </a>
                    <?php } ?>
                    <?php
                    $link_buttons = ob_get_contents();
                    ob_end_flush();
                    ?>
                    <!-- } 게시물 상단 버튼 끝 -->
                </li>
            </ul>
        </div>
    </section>

    <section id="bo_v_atc">
        <h3 class="sr-only">본문</h3>
        <!-- 본문 내용 시작 { -->
        <div id="bo_v_con" class="mb-4 px-3">

            <?php if(IS_NA_BBS && $is_admin && isset($view['as_type']) && $view['as_type'] == "-1") { // 신고처리 ?>
                <div class="alert alert-danger text-center" role="alert">
                    신고 처리된 게시물입니다.
                </div>
            <?php } ?>

            <?php
                // 첨부 동영상 출력 - 이미지출력보다 위에 있어야 함
                if(isset($boset['na_video_attach']) && $boset['na_video_attach'])
                    echo na_video_attach();

                // 링크 동영상 출력
                if(isset($boset['na_video_link']) && $boset['na_video_link'])
                    echo na_video_link($view['link']);

                // 상단 이미지 출력
                if(!isset($view['as_img']) || !$view['as_img']) {
                    $v_img_count = count($view['file']);
                    if($v_img_count) {
                        echo "<div id=\"bo_v_img\">\n";
                        for ($i=0; $i<=$v_img_count; $i++) {
                            if(isset($view['file'][$i]))
                                echo get_file_thumbnail($view['file'][$i]);
                        }
                        echo "</div>\n";
                    }
                }
            ?>

            <div class="view-content">
                <?php echo get_view_thumbnail(na_view($view)); // 글내용 출력 ?>
            </div>

            <?php
                // 하단 이미지 출력
                if(isset($view['as_img']) && $view['as_img'] == "1") {
                    $v_img_count = count($view['file']);
                    if($v_img_count) {
                        echo "<div id=\"bo_v_img\">\n";
                        for ($i=0; $i<=$v_img_count; $i++) {
                            if(isset($view['file'][$i]))
                                echo get_file_thumbnail($view['file'][$i]);
                        }
                        echo "</div>\n";
                    }
                }
            ?>
        </div>
        <!-- } 본문 내용 끝 -->

        <?php if($board['bo_use_good'] || $board['bo_use_nogood'] || $scrap_href || $board['bo_use_sns']) { ?>
            <div id="bo_v_btn_group" class="clearfix text-center py-4 px-3 en">
                <div class="btn-group btn-group-lg" role="group">
                    <?php if ($board['bo_use_good']) { // 추천 ?>
                        <button type="button" onclick="na_good('<?php echo $bo_table ?>', '<?php echo $wr_id ?>', 'good', 'wr_good');" class="btn btn-basic" title="추천">
                            <i class="fa fa-thumbs-o-up" aria-hidden="true"></i>
                            <b id="wr_good" class="orangered"><?php echo number_format($view['wr_good']) ?></b>
                            <span class="sr-only">추천</span>
                        </button>
                    <?php } ?>

                    <?php if ($board['bo_use_nogood']) { // 비추천 ?>
                        <button type="button" onclick="na_good('<?php echo $bo_table ?>', '<?php echo $wr_id ?>', 'nogood', 'wr_nogood');" class="btn btn-basic" title="비추천">
                            <i class="fa fa-thumbs-o-down" aria-hidden="true"></i>
                            <b id="wr_nogood"><?php echo number_format($view['wr_nogood']) ?></b>
                            <span class="sr-only">비추천</span>
                        </button>
                    <?php } ?>
                    <?php if ($scrap_href) { // 스크랩 ?>
                        <button type="button" class="btn btn-basic" onclick="win_scrap('<?php echo $scrap_href ?>');" title="스크랩">
                            <i class="fa fa-bookmark" aria-hidden="true"></i>
                            <span class="sr-only">스크랩</span>
                        </button>
                    <?php } ?>

                    <?php if($board['bo_use_sns']) { // SNS 공유 ?>
                        <button type="button" class="btn btn-basic" data-toggle="modal" data-target="#bo_snsModal" title="SNS 공유">
                            <i class="fa fa-share-alt" aria-hidden="true"></i>
                            <span class="sr-only">SNS 공유</span>
                        </button>
                    <?php } ?>
                    <?php if (IS_NA_BBS && isset($boset['na_shingo']) && $boset['na_shingo']) { // 신고 ?>
                        <button type="button" class="btn btn-basic" onclick="na_shingo('<?php echo $bo_table ?>', '<?php echo $wr_id ?>');" title="신고">
                            <i class="fa fa-ban" aria-hidden="true"></i>
                            <span class="sr-only">신고</span>
                        </button>
                    <?php } ?>
                </div>
            </div>
        <?php } ?>

        <?php if(isset($view['as_tag']) && $view['as_tag']) { // 태그 ?>
            <div class="f-de p-3">
                <span class="sr-only">태그</span>
                <?php echo na_get_tag($view['as_tag']) ?>
            </div>
        <?php } ?>
    </section>

    <section id="bo_v_data">
        <h3 class="sr-only">관련자료</h3>
        <ul class="na-table d-table w-100 text-muted f-de font-weight-normal">
        <?php if ($is_signature && $signature) { ?>
        <!-- 회원서명 시작 { -->
        <li class="d-table-row border-top border-bottom">
            <div class="d-none d-sm-table-cell text-center px-3 py-2 nw-6">
                서명
            </div>
            <div class="d-table-cell px-3 py-2">
                <div class="d-flex my-1">
                    <div class="px-0">
                        <i class="fa fa-user-o" aria-hidden="true"></i>
                    </div>
                    <div class="pl-3 flex-grow-1 text-break-all">
                        <?php echo $signature ?>
                    </div>
                </div>
            </div>
        </li>
        <!-- } 회원서명 끝 -->
        <?php } ?>
        <?php if(isset($view['link'][1]) && $view['link'][1]) { ?>
        <!-- 관련링크 시작 { -->
        <li class="d-table-row border-top border-bottom">
            <div class="d-none d-sm-table-cell text-center px-3 py-2 nw-6">
                링크
            </div>
            <div class="d-table-cell px-3 py-2">
                <?php
                //링크
                $cnt = 0;
                for ($i=1; $i<=count($view['link']); $i++) {
                    if ($view['link'][$i]) {
                        $cnt++;
                    ?>
                    <div class="d-flex my-1">
                        <div class="px-0">
                            <i class="fa fa-link" aria-hidden="true"></i>    
                        </div>
                        <div class="pl-3 flex-grow-1 text-break-all">
                            <a href="<?php echo $view['link_href'][$i] ?>" target="_blank">
                                <?php echo get_text($view['link'][$i]) ?>
                                <?php if($view['link_hit'][$i]) { ?>
                                    <span class="count-plus orangered"><?php echo $view['link_hit'][$i] ?></span>
                                    <span class="sr-only">회 연결</span>
                                <?php } ?>
                            </a>    
                        </div>
                    </div>
                    <?php
                    }
                }
                ?>
            </div>
        </li>
        <!-- } 관련링크 끝 -->
        <?php } ?>
    
        <?php
        $cnt = 0;
        if ($view['file']['count']) {
            for ($i=0; $i<count($view['file']); $i++) {
                if (isset($view['file'][$i]['source']) && $view['file'][$i]['source'] && !$view['file'][$i]['view'])
                    $cnt++;
            }
        }
        ?>

        <?php if($cnt) { ?>
        <!-- 첨부파일 시작 { -->
        <li class="d-table-row border-top border-bottom">
            <div class="d-none d-sm-table-cell text-center px-3 py-2 nw-6">
                첨부
            </div>
            <div class="d-table-cell px-3 py-2">
                <?php
                //가변 파일
                for ($i=0; $i<count($view['file']); $i++) {
                    if (isset($view['file'][$i]['source']) && $view['file'][$i]['source'] && !$view['file'][$i]['view']) {
                ?>
                    <div class="d-flex my-1">
                        <div class="px-0">
                            <i class="fa fa-download" aria-hidden="true"></i>    
                        </div>
                        <div class="pl-3 flex-grow-1 text-break-all">
                            <div class="d-md-flex">
                                <div class="flex-grow-1 pr-2">
                                    <a href="<?php echo $view['file'][$i]['href'] ?>" class="view_file_download" title="<?php echo $view['file'][$i]['content'] ?>">
                                        <?php echo $view['file'][$i]['source'] ?>
                                        <span class="sr-only">파일크기</span>
                                        (<?php echo $view['file'][$i]['size'] ?>)
                                        <?php if($view['file'][$i]['download'] && $is_admin ) { ?>
                                            <span class="count-plus orangered"><?php echo $view['file'][$i]['download'] ?></span>
                                            <span class="sr-only">회 다운로드</span>
                                        <?php } ?>
                                    </a>
                                </div>
                                <div class="px-0 f-sm text-nowrap">
                                    <span class="sr-only">등록일</span>
                                    <?php echo date("Y.m.d H:i", strtotime($view['file'][$i]['datetime'])) ?>
                                </div>
                            </div>
                        </div>
                    </div>
                <?php
                    }
                }
                ?>
            </div>
        </li>
        <!-- } 첨부파일 끝 -->
        <?php } ?>

        <?php if ($prev_href) { ?>
        <!-- 이전글 시작 { -->
        <li class="d-table-row border-top border-bottom">
            <div class="d-none d-sm-table-cell text-center px-3 py-2 nw-6">
                이전
            </div>
            <div class="d-table-cell px-3 py-2">
                <div class="d-flex my-1">
                    <div class="px-0">
                        <i class="fa fa-chevron-up" aria-hidden="true"></i>    
                    </div>
                    <div class="pl-3 pr-2 flex-grow-1 text-break-all">
                        <a href="<?php echo $prev_href ?>">
                            <?php echo $prev_wr_subject;?>
                        </a>    
                    </div>
                    <div class="d-none d-md-block px-0 f-sm text-nowrap font-weight-normal">
                        <span class="sr-only">작성일</span>
                        <?php echo date("Y.m.d H:i", strtotime($prev_wr_date)) ?>
                    </div>
                </div>
            </div>
        </li>
        <!-- } 이전글 끝 -->
        <?php } ?>        

        <?php if ($next_href) { ?>
        <!-- 다음글 시작 { -->
        <li class="d-table-row border-top border-bottom">
            <div class="d-none d-sm-table-cell text-center px-3 py-2 nw-6">
                다음
            </div>
            <div class="d-table-cell px-3 py-2">
                <div class="d-flex my-1">
                    <div class="px-0">
                        <i class="fa fa-chevron-down" aria-hidden="true"></i>    
                    </div>
                    <div class="px-3 flex-grow-1 text-break-all">
                        <a href="<?php echo $next_href ?>">
                            <?php echo $next_wr_subject;?>
                        </a>    
                    </div>
                    <div class="d-none d-md-block px-0 f-sm text-nowrap font-weight-normal">
                        <span class="sr-only">작성일</span>
                        <?php echo date("Y.m.d", strtotime($next_wr_date)) ?>
                    </div>
                </div>
            </div>
        </li>
        <!-- } 다음글 끝 -->
        <?php } ?>        
        </ul>
    </section>

    <?php include_once(NA_PATH.'/bbs/view_comment.php'); // 댓글 ?>

    <!-- 게시물 하단 버튼 시작 { -->
    <div class="clearfix pt-2 px-3 px-sm-0 border-top text-right" style="margin-top:-1px;">
        <?php ec

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

".$board_skin_url."/pdfjs/web/viewer.html?file=".$view['file'][$i]['path']."/".$view['file'][$i]['file']."

 

이 값이 모로 나오는지 확인해보셨을가요?

not found로 표시된다는건 위 주소값이 문제일 것으로 확인됩니다.

 

[$i] 는 보통 for 문돌릴때 for($i=0;$i < count($view['file']); $i++ ){ 

이런식으로 해야지 저 $i 값에 숫자가 들어갑니다.

 

즉 php 소스만 넣으신다고 주소가 나오진 않습니다. for문안에 있어야 실행이 됩니다.

 

첫페이지만 추출하시고 싶으시다고 하셨는데

php로 pdf 첫페이지 추출하는 방법을 찾아보시기 바랍니다.

저는 이부분이 어렵네요

 

제가 이걸 만든다면 꼭 첫장이 보여져야한다면 

글작성 시에 파일 1은 첫장 jpg로 등록 후 

ftp로 pdf를 업로드 하고 그 해당 파일의 링크주소를 wr_link1에 pdf의 파일 주소를 넣을것입니다.

뷰페이지에서 제가 임의로 커스텀 해서 

파일 1의 jpg를 보여주고 클릭 시 링크로 보내는 방법으로 코딩을 작성할듯합니다.

 

제의견이니 필요부분만 도움이 되시길 

 

 

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

위너즈
2년 전
답변 감사합니다.
첨부파일을 제가 올리는게 아니라 회원들이 올리는 구조다 보니
중복해서 다운로드 되는걸 조금이나마 방지하고자 미리보기 페이지를 보여주고자 함입니다
위에 코드에 for 문 안에 있어야 한다는 말이...잘 이해가 안돼요 ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

F
2년 전

https://sir.kr/g5_skin/45933

해당 자료를 참고해보세요.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

위너즈
2년 전
답변 감사합니다.
남겨주신 곳을 읽어 봤는데 전혀 모르겠습니다..

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인