게시판 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 {}
이렇게 넣었는데, 엉뚱한 위치에 뷰어가 아니라 깨진 상태로 나타났습니다.
─────────────────────────────────────────────
※ 참조 - 포스팅 참조 글 (링크도 첨부했습니다) ▼▼▼▼▼▼▼▼
아래 블로그에 보면 압축 파일도 있었는데
에디터 플러스에 함부로 붙여 넣기하면 망할거 같아서 위에 소스만 넣었습니다.
그리고, 아래 글은 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를 보여주고 클릭 시 링크로 보내는 방법으로 코딩을 작성할듯합니다.
제의견이니 필요부분만 도움이 되시길
https://stackoverflow.com/questions/467793/how-do-i-convert-a-pdf-document-to-a-preview-image-in-php
검토해 보세요.