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

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

QA

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

본문

게시판 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 {}

 

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

 

2040831179_1675915268.1022.png

 

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

 

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

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

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

 

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

 

2040831179_1675914899.5648.png

 

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

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

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

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

 

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

 

[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

https://sir.kr/g5_skin/45933

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

".$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를 보여주고 클릭 시 링크로 보내는 방법으로 코딩을 작성할듯합니다.

 

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

 

 

 

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

답변을 작성하시기 전에 로그인 해주세요.
전체 123,590 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT