0

PDFドキュメントで「ş」、「ç」、「ü」などのトルコ文字を印刷する必要があります。次のコードを使用しています。

global class InvoicePDFGenerator {

    public static final String FORM_HTML_START = '<HTML><BODY>';
    public static final String FORM_HTML_END = '</BODY></HTML>';

    webservice static void generateInvoicePDF(String invoiceId){
        OppoInvoice__c invoice= [SELECT Id,Account_Name__c FROM OppoInvoice__c WHERE Id=:invoiceId];
        String pdfContent = '';
        try {
            pdfContent = '<html><head><meta http-equiv=content-type content=text/html;charset=iso-8859-9></meta></head><body>';

            pdfContent = pdfContent + '<P>' + invoice.Account_Name__c+ '</P>';
            pdfContent = pdfContent + FORM_HTML_END;
        }catch(Exception e){
            pdfContent = '' + FORM_HTML_START;
            pdfContent = pdfContent + '<P>THERE WAS AN ERROR GENERATING PDF: ' + e.getMessage() + '</P>';
            pdfContent = pdfContent + FORM_HTML_END;
        }

        Attachment attachmentPDF = new Attachment();
        attachmentPDF.parentId = invoice.Id;
        attachmentPDF.Name = 'Invoice.pdf';
        attachmentPDF.body = Blob.toPDF(pdfContent); //This creates the PDF content
        insert attachmentPDF;

    }
}

行から発生した問題だと思いますattachmentPDF.body = Blob.toPDF(pdfContent)。この問題について何か考えはありますか?

4

2 に答える 2

0

トルコ語の文字を含む文字列定数をpdfContentにプッシュします。入力値が「öçşğüıÖÇŞĞÜİ」の場合、出力は「öçüÖÇÜ」です。

これはクエリなしのコードです。

global class AccountPDFGenerator
{

    webservice static void generateInvoicePDF(String accountId)
    {
//     Account account = [SELECT Id,Name FROM Account WHERE Id=:accountId];

        String accId = accountId;

        String pdfContent = '';
        try
        {
            pdfContent = '<html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-9"></meta></head><body>';           
            pdfContent = pdfContent + '<p style="color:red">' + 'öçşğüıÖÇŞĞÜİ' + '</p>';
            pdfContent = pdfContent + '</body></html>';
        }catch(Exception e)
        {
            pdfContent = pdfContent + '<P>THERE WAS AN ERROR GENERATING PDF: ' + e.getMessage() + '</P>';
        }
        pdfContent = 'öçşğüıÖÇŞĞÜİ'; 

        Attachment attachmentPDF = new Attachment();
        attachmentPDF.parentId = accId;
        attachmentPDF.Name = 'Invoice.pdf';
//     attachmentPDF.body= Blob.valueOf(pdfContent);
        attachmentPDF.body = Blob.toPDF(pdfContent); //This creates the PDF content
        insert attachmentPDF;

    } 

}

これは、[設定]>[カスタマイズ]>[アカウント]>[ボタンとリンク]のカスタムボタン用に作成されたJavaScriptコードです。

{!REQUIRESCRIPT("/soap/ajax/15.0/connection.js")}
{!REQUIRESCRIPT("/soap/ajax/15.0/apex.js")}
sforce.apex.execute("AccountPDFGenerator","generateInvoicePDF", {id:"{!Account.Id}"});
window.alert("Account Id is sent." );

そしてこれはhtmlファイルの内容です

<html><head><meta http-equiv=content-type content=text/html;charset=iso-8859-9></meta></head><body><p>öçşğüıÖÇŞĞÜİ</p></body></html>
于 2012-12-10T08:02:47.550 に答える
0

Blob.toPDFこれは、Salesforce に報告する方法の制限である可能性があります。

私が思いついた最も近い解決策はescapeHtml4()、各文字列でメソッドを使用することでしたが、それは文字エンティティのサブセットしかカバーしていません。'abcşidça'サンプル文字列をに変換します'abcşid&ccedil;a'

タグが出力に影響を与えている可能meta性が低い場合は、HTML を just<html><body>で開始してみて、それが役立つかどうかを確認してください。

于 2012-12-06T17:55:39.330 に答える