C#でlibHaruを使ってPDFを出力してみよう。その3「C#からlibHaruの呼び出し編」
さて、前回に続きC#でPDF作成できる手順を記載したいと思います。
libHaruのビルドが完了している前提になります。
ビルド手順は、前回の記事を参照してください。
stone-book.hatenablog.com
今回は、C#のプロジェクトで前回ビルドしたlibHaruのライブラリ、
libhpdf.dllを使って、libHaruのdemoに同梱されているPDF出力を目標にします。
検証に使ったソースコードは下記に公開しています。
GitHub - stone-book/libHaruApp
大まか流れは下記になります。
- プロジェクトの作成
- プロジェクトにhpdf.csとlibhpdf.dllの追加
- デモソースの修正と実行
プロジェクトの作成
Visual Studioを起動し、とりあえず.netコンソールアプリケーションを作成します。
ここで、ライブラリのビルドがx86である場合は、プロジェクトの設定を変更してください。
プロジェクトにhpdf.csとlibhpdf.dllの追加
既存の項目を追加で、libHaruフォルダにある、次のファイルをプロジェクトに追加します。
libharu\if\c#\hpdf.cs
同時にプロジェクトのカレントに「libhpdf.dll」を追加します。作成される実行ファイルと同じディレクトリに必要なので「出力ディレクトリにコピーする」としておくと便利です。
デモソースの修正と実行
次にデモソースを実行します。demoに入っていた、TextDemoをインポートし、適当にTextDemoのMain関数を呼び出すように変更。
このままでも動作するはずですが、
Console.WriteLine("libhpdf-" + HPdfDoc.HPdfGetVersion());
これと
pdf.SetCompressionMode(HPdfDoc.HPDF_COMP_ALL);
この箇所でなぜかエラーが出ました。
内容見る限り、コメントアウトしても影響なさそうと思い、コメントアウトします。若干気持ち悪いですが・・
PDFが出力されました。
念のため、ImageDemoも同様の修正を加えて実行してみたところ動作しました。
簡単な帳票くらいなら対応できそうです。
追記(2017/9/12)
HPdfDoc.HPdfGetVersion()については、hpdf.csを修正することで対応できるようです。
Critical error detected c0000374 bei Aufruf native code von managed dll
githubにあげているソースにも反映しました。