とあるSEの手順書

個人的な技術メモです。無保証ですが参考になりましたら幸いです。

C#でlibHaruを使ってPDFを出力してみよう。その3「C#からlibHaruの呼び出し編」

さて、前回に続きC#でPDF作成できる手順を記載したいと思います。
libHaruのビルドが完了している前提になります。
ビルド手順は、前回の記事を参照してください。
stone-book.hatenablog.com

今回は、C#のプロジェクトで前回ビルドしたlibHaruのライブラリ、
libhpdf.dllを使って、libHaruのdemoに同梱されているPDF出力を目標にします。
検証に使ったソースコードは下記に公開しています。
GitHub - stone-book/libHaruApp

大まか流れは下記になります。

  1. プロジェクトの作成
  2. プロジェクトにhpdf.csとlibhpdf.dllの追加
  3. デモソースの修正と実行

プロジェクトの作成

Visual Studioを起動し、とりあえず.netコンソールアプリケーションを作成します。

ここで、ライブラリのビルドがx86である場合は、プロジェクトの設定を変更してください。

f:id:stone-book:20170911222351p:plain
プロジェクトの設定

プロジェクトにhpdf.csとlibhpdf.dllの追加

既存の項目を追加で、libHaruフォルダにある、次のファイルをプロジェクトに追加します。

libharu\if\c#\hpdf.cs

同時にプロジェクトのカレントに「libhpdf.dll」を追加します。

f:id:stone-book:20170911222719p:plain
プロジェクトの状態
作成される実行ファイルと同じディレクトリに必要なので「出力ディレクトリにコピーする」としておくと便利です。

デモソースの修正と実行

次にデモソースを実行します。demoに入っていた、TextDemoをインポートし、適当にTextDemoのMain関数を呼び出すように変更。

このままでも動作するはずですが、

Console.WriteLine("libhpdf-" + HPdfDoc.HPdfGetVersion());

これと

pdf.SetCompressionMode(HPdfDoc.HPDF_COMP_ALL);

この箇所でなぜかエラーが出ました。
内容見る限り、コメントアウトしても影響なさそうと思い、コメントアウトします。

f:id:stone-book:20170911223003p:plain
デモソースの修正
若干気持ち悪いですが・・
f:id:stone-book:20170911223407p:plain
出力結果

PDFが出力されました。
念のため、ImageDemoも同様の修正を加えて実行してみたところ動作しました。

簡単な帳票くらいなら対応できそうです。

追記(2017/9/12)

HPdfDoc.HPdfGetVersion()については、hpdf.csを修正することで対応できるようです。
Critical error detected c0000374 bei Aufruf native code von managed dll

githubにあげているソースにも反映しました。