SalesforceのVisualforceページで「renderAs=“PDF”」属性を使うと、ページをPDFファイルに書き出すことができます。PDFファイルとは、アドビシステムズ株式会社が開発した文書フォーマットの1つです。PDFにRayBarcodeで生成したバーコードを出力するには、Web APIを使用します。 Web APIを使用するにあたり、アクセストークンの生成が必要となるため、PDFを書き出すVisualforceページの前に、トークンを生成するページの表示が必要です。たとえばSalesforceの画面上に「PDFを表示」ボタンを用意します。ユーザーがこのボタンをクリックし、画面がPDFファイルのページに遷移する直前にトークンを生成する方法があります。
次の知識が必要です。
ユーザーは次の手順で利用します。
まず、PDFを出力するVisualforceページとそのコントローラーを作成します。
Salesforce Classicの場合、「設定 > ビルド > 開発 > Apexクラス」に次のコントローラーを追加します。Lightning Experienceの場合、歯車アイコンをクリックした後「設定 > プラットフォームツール > カスタムコード > Apexクラス」に次のコントローラーを追加します。
// RenderBarcodeAsPDFFilePageController.cls
public class RenderBarcodeAsPDFFilePageController {
public String qrCodeImageURL {get; set;}
public String barcodeValue {get; set;}
static final String GCBARCODE_BASEURL = 'https://gcbarcode.azurewebsites.net';
public RenderBarcodeAsPDFFilePageController()
{
this.barcodeValue= System.currentPageReference().GetParameters().get('value');
this.qrCodeImageURL = '';
String token = gcbc__GcBarcodeSetting__c.getInstance(UserInfo.getUserId()).gcbc__AccessToken__c;
this.qrCodeImageURL = GCBARCODE_BASEURL + '/api/Png/qrcode?Width=300&Height=300&value=' + BarcodeValue + '&token=' + token;
}
}
その後、このコントローラーを呼び出すVisualforceページを追加します。このVisualforceページを「プレビュー」実行しても、この時点では空のPDFファイルが表示されます。
PDFファイルを描画するVisualforceページです。通常のVisualforceページとは異なる「renderAs=“PDF”」属性がPDF出力を示します。
<!-- RenderBarcodeAsPDFFilePage.vfp -->
<apex:page controller="RenderBarcodeAsPDFFilePageController" renderAs="PDF">
<apex:outputPanel id="barcodeImgPane">
<apex:image alt="{!BarcodeValue}" url="{!QRCodeImageURL}"/>
</apex:outputPanel>
</apex:page>
次に、PDFファイルを呼び出すためのVisualforceページとそのコントローラーを作成します。このページは「バーコードの値」入力ボックスと「PDFを表示」ボタンを持ちます。ユーザーが入力ボックスに任意の値を入力して「PDFを表示」ボタンをクリックすると、その値がQRコードとしてPDFに表示されます。
コントローラーを作成するには、Salesforce Classicの場合、「設定 > ビルド > 開発 > Apexクラス」を表示します。Lightning Experienceの場合、歯車アイコンをクリックした後「設定 > プラットフォームツール > カスタムコード > Apexクラス」を表示します。または、Salesforceの「開発者コンソール」を使用します。
// BarcodePrintPdfDemoContoller.cls
public class BarcodePrintPdfDemoContoller {
// 入力値を格納する
public String barcodeValue {get; set;}
// 「PDFを表示」ボタンのクリック後の処理
public PageReference showQRCode(){
if (String.isBlank(this.barcodeValue)){
return null;
}
// アクセストークンを生成する
gcbc.GcBarcodeGlobalAccessTokenGenerator.UpdateAccessToken();
PageReference pdfPage = Page.RenderBarcodeAsPDFFilePage;
// バーコードの値をURLエンコードする
String utf8encodedValue = EncodingUtil.urlEncode(this.BarcodeValue, 'UTF-8');
pdfPage.getParameters().put('value', utf8encodedValue);
return pdfPage;
}
}
PDFファイルを呼び出すためのVisualforceページです。Visualforceページを作成するには、Salesforce Classicの場合、「設定 > ビルド > 開発 > Visualforceページ」を表示します。Lightning Experienceの場合、歯車アイコンをクリックした後「設定 > プラットフォームツール > カスタムコード > Visualforceページ」を表示します。または、Salesforceの「開発者コンソール」を使用します。
<!-- BarcodePrintPdfDemo.vfp -->
<apex:page controller="BarcodePrintPdfDemoContoller">
<apex:form id="form1">
<apex:pageBlock >
<apex:outputLabel value="バーコードの値:" for="inputBarcodeValue"/>
<apex:inputText value="{!BarcodeValue}" id="inputBarcodeValue" />
<br/>
<apex:outputText value="記入例:1234567890" />
</apex:pageBlock>
<apex:commandButton action="{!ShowQRCode}" value="PDFを表示" reRender="form1"/>
</apex:form>
</apex:page>
作成したVisualforceページをプレビュー表示します。「PDFを表示」ボタンをクリックしたあと、ブラウザーにバーコード入りのPDFファイルが表示されれば成功です。
VisualforceページをPDFファイルとして使用する場合は、「UpdateAccessToken」を適切なタイミングで使用する必要があります。詳細はこちらを参照してください。本ページで紹介しているサンプルコードは適切なタイミングで「UpdateAccessToken」を実行しています。
作成したPDFファイルをメールで送信する方法は、「メールで送信する」を参照してください。
Copyright © 2024 MESCIUS inc. All rights reserved.