我需要在pdf文檔中打印土耳其字符,如「ş」,「ç」,「ü」等。 我正在使用以下代碼。Salesforce中Blob對象的toPdf方法的字符集問題
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)
行引起的問題。你對這個問題有什麼想法嗎?
會發生什麼?我假設Salesforce在其字符串中使用UTF-8。你有沒有嘗試拋棄試圖設置'charset = iso-8859-9'的'META'標籤? – tomlogic
我也嘗試過使用UTF-8,但結果沒有改變。代碼工作正常,但土耳其人不會出現。例如,如果pdfContent變量的值是'abcşidça',則pdf文檔的輸出是'abcida'。 它如何編寫一個元標籤,沒有?你能告訴我一個例子嗎? – mustafatop
(1)您可以發佈不使用查詢的代碼版本嗎?換句話說,你能否將一個帶有土耳其字符的字符串保持爲pdfContent。這將允許其他人(如我)以不同的條件嘗試Blob.toPDF()。 (2)您可以使用這些相同的土耳其字符創建html文件,並驗證此文件是否可以在瀏覽器中使用。 – Bryan