본 포스트에서는 화면을 pdf로 표시하는 방법에 대해 알아보겠습니다.
pdf 표시는 주로 시스템에서 계약서, 청구서 등과 같은 장표(?)를 표시, 출력하기 위해 사용합니다.
( 일본에서는 계약서 같은 것들을 통틀어 장표(帳票)라고 하는데 한국에서도 쓰는 말인가..? 서류인가? )
# Visualforce 페이지를 pdf 화면으로 설정하기
Visualforce 페이지를 pdf 페이지로 설정하기 위해서는 <apex:page> 태그에 renderAs="pdf" 속성을 추가해주면 됩니다.
<apex:page standardController="Account" renderAs="pdf" showHeader="false" applyHtmlTag="false">
<!-- showHeader : Salesforce 탭 헤더 표시 유무 -->
<!-- applyHtmlTag : Visualforce에서 자동으로 html 태그를 생성할지에 대한 유무 -->
그럼 이것으로 끝난건가요?
아니죠. 우리는 용도에 맞게 페이지를 설정할 필요가 있습니다. 예를 들어 A4용지 사이즈의 세로형 이라던가..
페이지의 규격 등의 설정에는 CSS가 사용됩니다.
<style>
body {
// 폰트 설정
font-family:Arial;
// font-family:Arial Unicode MS; (일본어 표시가 가능한 유일한 폰트)
}
@page {
// 페이지 설정
size:A4 portrait; // A4 세로
// size:A4 landscape; // A4 가로
margin:10mm; // 상하좌우 여백
@top-left {
// 헤더(header) 표시
font-family: Arial;
content: "헤더 표시";
}
@bottom-center {
// 풋터(footer)표시
// [페이지 번호 / 총 페이지 수] 표시
content: "Page: " counter(page) " / " counter(pages);
}
@top-center {
// 뒷 배경 넣기
font-family: Arial
content: "Hello PDF World!";
white-space: pre;
font-size:2em;
font-weight:bold;
color:#ccc;
padding-top:300px;
}
}
@media print {
// 화면 인쇄용 CSS 설정
// 이곳에서 지정한 CSS는 화면을 인쇄할 때 사용
body {}
}
@media screen {
// 화면 출력용 CSS 설정
// 이곳에서 지정한 CSS는 화면을 표시할 때 사용
}
.pagebreak {
// 다음 화면으로 넘기기
page-break-before:always;
}
</style>
# pdf 페이지 표시하기
이곳에서는 버튼을 클릭하여 pdf 페이지를 표시하는 샘플을 작성하겠습니다.
1. Apex 컨트롤러에서 pdf 페이지 표시하기
☞ Apex Controller
/**
* @description 버튼 클릭 이벤트로 pdf 페이지를 표시
*/
public PageReference openPdfPage() {
// pdf 페이지를 지정
return Page.DspPdf;
}
☞ Visualforce page
<apex:commandButton value="PDF 표시" action="{!openPdfPage}"/>
2. Visualforce에서 pdf 표시하기
☞ Visualforce page
<apex:commandButton value="PDF 표시" action="{!URLFOR($Page.DspPdf)}"/>
3. Apex에서 URL지정, Visualforce에서 javascript를 통해 pdf 표시하기
☞ Apex Controller
/**
* @description PDF 페이지 표시용 컨트롤러
*/
public class CntrlDspPdf {
// PDF 페이지 URL
public String pdfPageUrl { get; set; }
/**
* @description 생성자
*/
public CntrlDspPdf() {
// PDF 페에지의 URL 습득
pdfPageUrl = Page.DspPdf.getUrl();
}
}
☞ Visualforce page
<script type="text/javascript">
/**
* @description VF페이지를 팝업으로 표시
* @param targetUrl 표시할 페이지의 URL
*/
function printCliamBill(targetUrl) {
// PDF페이지를 팝업으로 표시
var printTarget = window.open(targetUrl, 'PDF Page', 'width=1024,height=800,left=0,top=0');
}
</script>
<apex:commandButton value="PDF 표시" onclick="printPdf('{!targetUrl}')"/>
이상으로 Visualforce를 PDF 형식으로 출력하는 방법에 대해 알아보았습니다.
Salesforce AppExchange(Salesforce store)에서 유료로 배포되는 "SkyVisualEditor"라는 것을 사용하면
VIsualforce 페이지나 청구서 같은 pdf 서류 등을 쉽게 작성할 수 있습니다.
(현재 회사에서는 돈 아낀다고 다 직접 만들고 있는 것이 스트레스지만..)
'Salesforce.com > Force.com' 카테고리의 다른 글
[SFDC] 사용자 정의 라벨(Custom Label) 사용법 (0) | 2021.01.19 |
---|---|
[SFDC] Apex에서 Email 송신 (0) | 2020.08.29 |
[SFDC] Visualforce로 csv 출력 (1) | 2020.08.22 |
[SFDC] Visualforce에서 Javascript 사용하기 (0) | 2020.08.21 |
[SFDC] Salesforce 기초5) Apex와 Visualforce 개발 연습 - 도서 관리 프로그램 ver2 (0) | 2020.07.20 |