<!-- $Label.[사용자 정의 라벨 이름] -->
ex) <apex:outputText value="{!$Label.LabelApple}"/>
# 번역 기능 실행 결과
코드 예시)
※ Apex 컨트롤러
public class CntrlCustomLabelTrans {
// 화면에 표시할 사용자 정의 라벨의 텍스트 값 변수
public String labelTxt { get; set; }
public CntrlCustomLabelTrans() {
// 사용자 정의 라벨의 텍스트 값 습득
labelTxt = System.Label.LabelApple;
}
}
※ Visualforce 페이지
<apex:page controller="CntrlCustomLabelTrans" sidebar="false">
<apex:form id="form">
<apex:pageBlock>
<apex:pageBlockSection columns="1" showHeader="true" collapsible="true" title="사용자 정의 라벨 테스트">
<apex:pageBlockSectionItem>
<apex:outputText value="Apex 컨트롤러에서 사용자 정의 라벨 표시"/>
<apex:outputText value="{!labelTxt}"/>
</apex:pageBlockSectionItem>
<apex:pageBlockSectionItem>
<apex:outputText value="Visualforce 내에서 사용자 정의 라벨 표시"/>
<apex:outputText value="{!$Label.LabelApple}"/>
</apex:pageBlockSectionItem>
</apex:pageBlockSection>
</apex:pageBlock>
</apex:form>
</apex:page>
☆표시 결과(한국어)
번역 기능을 확인하기 위해, [설정 > 사용자 > 사용자]를 클릭해 "사용자" 화면을 표시합니다.
그 후, 로그인 중인 유저의 이름 왼쪽에 표시된 편집 링크를 클릭해 "사용자 편집 화면"을 표시합니다.
"사용자 편집 화면"의 아래를 보면, 언어를 변경할 수 있는 언어 선택란이 있습니다.
언어를 영어 또는 일본어로 바꾸어 준 후, [저장] 버튼을 눌러 저장합니다.
언어 설정이 완료된 후, 다시 한 번 페이지를 표시하면 번역된 텍스트가 표시됩니다.
☆표시 결과(영어)
☆표시 결과(일본어)
주의할 점은 사용자 정의 라벨에 설정한 언어와 그 텍스트 값으로만 표시되기 때문에, 현재 상황에서 중국어 등을 선택하면 한국어인 "사과"가 그대로 표시됩니다.
따라서 필요에 따라 언어 설정을 추가해야만 합니다.
이상으로 사용자 정의 라벨(Custom Label)의 사용법에 대해 알아보았습니다.
사용자 정의 라벨을 사용할 때의 주의점 중 하나는, 개발한 애플리케이션을 판매하기 위해 패키지를 만들었을 경우
즉, 관리 패키지를 생성한 경우, 사용자 정의 라벨의 텍스트값(여기서는 "사과")의 변경이 불가능합니다.
따라서, 패키지를 제공하여 거래처에 따라 서로 다른 항목명 등을 사용할 목적으로 사용자 정의 라벨을 사용하는 것은 바람직하지 않은 방법입니다.
현재, 패키지에 관련된 포스팅이 없기 때문에 무슨 말인지 이해하기 힘드실 수도 있지만, 차차 패키지 관련 포스트도 업로드 할 예정이기 때문에 그 때 다시 한 번 전체적으로 주의점을 나열해 볼 생각입니다.
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;
}
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"라는 것을 사용하면
Apex에서 메일을 송신하기 위해서는 Salesforce에서 제공하는 SingleEmailMessage 클래스를 사용하면 됩니다.
# 메일 작성 및 송신 방법
public void sendMail(){
// mail 인스턴스 생성
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
// 받는 사람 주소 설정(To)
mail.setToAddresses(new List<String>{ 'toAddr@abc.com' });
// 받는 사람 주소 설정(Bcc)
//mail.setBccAddresses(new List<String>{ 'bccAddr@abc.com' });
// 받는 사람 주소 설정(cc)
//mail.setCcAddresses(new List<String>{ 'ccAddr@abc.com' });
// 제목
mail.setSubject('메일 타이틀');
// 본문
mail.setPlainTextBody('메일 송신 테스트');
// 보내는 사람 이름 설정
mail.setSenderDisplayName('Salesforce Support');
// 메일 송신
Messaging.sendEmail(new Messaging.Email[] { mail });
}
☞ 실행 결과
# 샘플 코드
간단하게 화면에서 메일 주소, 제목, 본문을 작성하고 버튼으로 송신하는 화면을 작성하겠습니다.