我試圖通過將其轉換爲來自後端的二進制字符串來顯示PDF。 這是Ajax調用我正在在PDF中顯示UTF-8字符
$.ajax({
type : 'GET',
url : '<url>',
data : oParameters,
contentType : 'application/pdf;charset=UTF-8',
success : function(odata) {
window.open("data:application/pdf;charset=utf-8," + escape(odata));
} });
當我嘗試在新窗口中打開PDF,網址看起來像
數據:應用程序/ PDF格式;字符集= UTF-8,%25PDF-1.3%0D%0A%25%uFFFD %uFFFD%uFFFD%uFFFD%0D%0A2%200%20obj%0D 0A%/ WinAnsiEncoding%0D ........
正如你所看到的,它使用 「WinAnsiEncoding」 來顯示PDF 。正因爲如此,一些字符沒有正確顯示。我如何將其更改爲UTF-8?
編輯:後端在ABAP。我正在使用功能模塊「CONVERT_OTF」將smartform轉換爲OTF,然後轉換爲字符串。
CALL FUNCTION fname
EXPORTING
user_settings = space
control_parameters = ls_ctropt
output_options = ls_output
gv_lang = lv_lang
IMPORTING
job_output_info = ls_body_text
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
format = 'PDF'
IMPORTING
bin_filesize = ls_pdf_len
bin_file = ls_pdf_xstring
TABLES
otf = ls_body_text-otfdata
lines = lt_lines
EXCEPTIONS
err_max_linewidth = 1
err_format = 2
err_conv_not_possible = 3
err_bad_otf = 4
OTHERS = 5.
CALL METHOD server->response->set_header_field(name = 'Content-Type'
value = 'application/pdf;charset=UTF-8').
CALL METHOD server->response->append_data(data = lv_pdf_string
length = lv_len).
向我們展示創建此PDF數據的服務器端代碼。 – Bergi
您是否檢查過正在執行ABAP程序的用戶在其首選項中設置了正確的登錄語言? – vwegert
我將一個語言參數傳遞給正在生成PDF的smartform。問題在於像日文這樣的必須使用「UTF-8」編碼的語言,否則它就可以正常工作。謝謝。 – Themasterhimself