Julia使用libharu
最近使用BinaryBuilder製作一個libharu(C/C++的PDF繪製生成函式庫)對Julia的binding,放在這裡:https://github.com/Yoxem/libharu_jll.jl
使用 @ccall 巨集呼叫該C函式庫。
使用方法:
- 輸入julia進入REPL模式後,按「]」進入套件管理模式,輸入
add https://github.com/Yoxem/libharu_jll.jl.git
。 - 以下為範例程式,使用UTF-8編碼,輸出文字。其中中文因為字型沒有字,所以出現方框。另外希伯來文是順序顛倒的。
julia > using libharu_jll julia > pdf = @ccall libhpdf.HPDF_New(""::Cstring, 0::Cint)::Ptr{float};page = @ccall libhpdf.HPDF_AddPage(pdf::Ptr{float})::Ptr{float} julia > font_name = @ccall libhpdf.HPDF_LoadTTFontFromFile(pdf::Ptr{float}, "/usr/share/fonts/truetype/freefont/FreeSerif.ttf"::Cstring, 1::Cint)::Cstring; #載入ttf字型,字型路徑僅供參考 julia> @ccall libhpdf.HPDF_UseUTFEncodings(pdf::Ptr{float})::Ptr{float}; #使用UTF-8前必加 julia> @ccall libhpdf.HPDF_SetCurrentEncoder(pdf::Ptr{float}, "UTF-8"::Cstring)::Ptr{float}; #用UTF-8 julia> font2 = @ccall libhpdf.HPDF_GetFont(pdf::Ptr{float}, font_name::Cstring, "UTF-8"::Cstring)::Ptr{float}; #新增使用字體 julia> @ccall libhpdf.HPDF_Page_SetFontAndSize(page::Ptr{float}, font2::Ptr{float}, 20.0::Cfloat)::Ptr{Cfloat}; #設定輸出字體與大小 julia> @ccall libhpdf.HPDF_Page_BeginText(page::Ptr{float})::Ptr{float}; #宣告加入文字 julia> @ccall libhpdf.HPDF_Page_TextOut(page::Ptr{float}, 45.0::Cfloat, 630.0::Cfloat, "123 上下中 שׁלום"::Cstring)::Ptr{float}; #輸出內文 julia> @ccall libhpdf.HPDF_Page_EndText(page::Ptr{float})::Ptr{float}; #宣告完成加入文字 julia> @ccall libhpdf.HPDF_SaveToFile(pdf::Ptr{float}, "test4.pdf"::Cstring)::Ptr{float}; #存檔到PDF
輸出結果如下: