PDF 的開源庫,大多是Java,或C#的,但C++也有一個很不錯的PDF開源庫:PoDoFo
我司的PDF簽章產品中,我就是用這個PoDoFo庫來做的底層
但是國外開源庫對中文支持都是或多或少有點問題的,這不,今天發現簽名annotation中要是寫中文就成亂碼了
如果你也做PDF的開發,不妨看看下面的內容
一。PODOFO庫也是源於linux中開發而來
我們的簽章產品是Windows下的,所以,我把這個開源以及依賴庫都搬到Windows上來了,但是,依賴眾多和庫本身也問題不少,我在此不再詳細介紹了
二。中文支持-相關方面
1 要向PDF中寫文字信息,要有幾個類涉入
1.1 PdfFont
1.2 PdfPainter
1.3 PdfEncodingFactory
2 支持中文的編碼器只有PdfEncodingFactory::GlobalIdentityEncodingInstance();
3 創建字體時要設置字體的編碼器(中文編碼器)
const PdfEncoding* pp = PdfEncodingFactory::GlobalIdentityEncodingInstance();
PoDoFo::PdfFont *font = document.CreateFont(pszFontName, false, false, false, pp);
4 PdfPainter中設置字體和字體顏色
painter.SetFont(font);
painter.SetColor(r, g, b);
5 要使用的中文信息,使用前要轉碼成UTF8格式才能正確寫入
PdfString pdfstr((pdf_utf8*)siText);
painter.DrawMultiLineText(fImageLeft, fImageTop, fImageWidth, fImageHeight, pdfstr);
Finally:
如果你用好了,不出意外的話,你應該已經在PDF文檔里寫入自己的中文信息了
***
因為是商業項目,我不便更詳細討論這個話題
祝各位有需要的朋友們好運