有人知道有一個很好的API,可用於C++,用於創建具有RTL語言(例如阿拉伯語和希伯來語)以及泰語和梵文等複雜腳本的PDF?目前我們正在使用Tracker的PDF API,它非常出色,但除了LTR腳本之外,它並沒有處理任何其他內容,似乎RTL支持對他們來說並不是一個優先事項,因爲這種支持已經承諾了將近2年,似乎並不是即將出臺。在C++中創建處理RTL語言和複雜腳本的PDF
1
A
回答
1
如果一個商用的Windows專用庫是一個有效的選項,你可以試用Amyuni PDF Creator ActiveX。該庫提供了用於創建或編輯PDF文件的自定義API。如果您首先將其作爲unicode包裝在variant structure中,則應該可以在text object中設置任何類型的文本。
如果您的應用程序已經支持使用Windows GDI進行打印,則可以重新使用此代碼並嘗試使用Amyuni PDF Converter。這是一個Microsoft認證的虛擬打印機驅動程序,它生成PDF文件作爲輸出,並且可以從打印完全控制應用。
對於Amyuni PDF Converter,有兩種使用C++的方法,您可以使用隨庫提供的C++頭文件,也可以將它用作提供相同功能的COM類。詳細信息請參見documentation。
該庫提供了C#,VB.Net和C++的示例代碼。下面是其中一個樣品的彙總版本:
#include "stdafx.h"
#include "CDIntf450.h"
#pragma comment (lib, "CDIntf450.lib")
#define AMYUNI_PRINTER "My PDF Converter"
#define AMYUNI_LICENSE "Amyuni Developer Evaluation"
#define AMYUNI_ACTIVATION_CODE "0ABCCD...567B3"
//Get a handle to Amyuni PDF Converter
HANDLE hPrinter = DriverInit(AMYUNI_PRINTER);
if(hDC == NULL){ /* error handling */ }
//Set the Amyuni PDF Converter as the default printer
CDISetDefaultPrinter (hPrinter);
//Configure the path for the output file
SetFileNameOptions (hPrinter, NoPrompt | UseFileName);
SetDefaultFileName (hPrinter, _T("c:\\temp\\PrintSomeThing.pdf"));
// Activate your license key
EnablePrinter (hPrinter, AMYUNI_LICENSE, AMYUNI_ACTIVATION_CODE);
HDC hDC = CreateDC("WINSPOOL" , AMYUNI_PRINTER, NULL, NULL);
if(hDC == NULL){ /* error handling */ }
DOCINFO di;
::ZeroMemory (&di, sizeof(DOCINFO));
di.cbSize = sizeof(DOCINFO);
di.lpszDocName = _T("myDocTitle");
StartDoc(hDC, &di);
StartPage(hDC);
//Print something
TextOutW(hDC, 200, 200, L"هذا هو اختبار"), lstrlenW (L"هذا هو اختبار")));
TextOut(hDC, 0, 400, _T("My PDF App"), lstrlen (_T("My PDF App")));
EndPage(hDC);
EndDoc(hDC);
//Clean Up
DeleteDC(hDC);
RestoreDefaultPrinter(hPrinter);
SetFileNameOptions (hPrinter, 0);
DriverEnd(hPrinter);
免責聲明1:我目前是Amyuni技術工作。
聲明2:示例代碼中的阿拉伯文文本片段是從谷歌翻譯獲得的,所以如果事實證明這是無稽之談,我會提前道歉。
相關問題
- 1. 如何從C#中檢查是否安裝了複雜腳本和rtl語言的文件?
- 2. sIFR和RTL語言
- 3. 在C#中創建一個簡單的腳本語言
- 4. java itext使用希伯來語(rtl)和英語創建pdf
- 5. 在TextView中使用語言環境(ltr/rtl)來處理重力
- 6. C/C++的腳本語言?
- 7. C#腳本語言
- 8. 在C#/ MVC中創建一個複雜的PDF
- 9. 創建腳本PDF創建
- 10. 如何創建腳本語言
- 11. C語言創建
- 12. 如何在unicode中管理混合LTR和RTL語言?
- 13. 如何使用jax-ws創建和處理複雜的對象?
- 14. 支持RTL語言
- 15. 如何在python中使用reportlab,rtl和bidi創建包含波斯語(波斯語)文本的PDF
- 16. C++中的自然語言處理
- 17. SQLCmd掛在複雜的批處理腳本上
- 18. 在Windows中處理CRF ++和Java語言
- 19. UITextView在RTL語言中的對齊
- 20. 腳本語言建議
- 21. 目錄創建和在批處理腳本中移位
- 22. Emacs中文本的語言批處理?
- 23. RTL語言的JSON編碼
- 24. Access中的複雜表單和腳本
- 25. 圈複雜度 - Cobol語言
- 26. 事件處理程序在C#語言
- 27. RTL語言Crystal報表中的文本無法正確導出爲PDF
- 28. 在DHTMLX或EXTJS4中支持RTL語言
- 29. 腳本語言
- 30. 使用AJAX處理其他腳本的複雜提交表單
謝謝 - 商業圖書館是好的。你能否指點我一些C++示例,展示如何使用PDF Converter與GDI調用一起從頭開始創建PDF文件? – arksoft 2013-05-02 12:06:46
@arksoft我已經更新了我的答案和更多細節。 – yms 2013-05-02 14:01:07