Pdf for UWP
メタファイルの使用
C1PDFの使い方 > メタファイルの使用

PDF for UWP のオブジェクトモデルは、よく知られた .NET Graphics モデルに倣っているため、簡単にドキュメントを作成できます。ただし、Graphics クラスのすべてのメソッドを PDF for UWP で使用できるわけではありません。また、Graphics オブジェクトに描画する既存のコードがあり、大部分のメソッドが同じであっても、書き直しは避けたい場合があります。

このような場合は、描画コマンドを Metafile に送り、C1PdfDocument.DrawImage コマンドを使用して MetafilePDF for UWP にレンダリングすることで、既存の .NET コードを再利用できます。この方法を使用して、画像または PDF ドキュメントとして作成したすべてのグラフィックを公開できます。

たとえば、各ページを Graphics オブジェクトに描画する PrintDocument パターンを使用してドキュメントを生成するアプリケーションがあるとします。この場合、同じメソッドを使用してメタファイルのコレクションをページごとに1つ作成し、次のコードを使用して、そのリストを PDF ドキュメントに変換します。

Visual Basic
コードのコピー
' ドキュメントをメタファイルのリストとしてページごとに1つ取得します。
Dim pages As ArrayList = GetMetafiles()

' ページをループ処理して PDF ドキュメントを作成します。
_c1pdf.Clear()
Dim i As Integer
for i = 0 i <= pages.Count

    ' i 番目のページを取得します。
    Dim page As Metafile = CType(Metafile.FromFile(pages[i]), Metafile)
    If Not (page Is Nothing) Then

        ' ページサイズを計算します。
        Dim sz As SizeF = page.PhysicalDimension
        sz.Width = Math.Round(sz.Width * 72.0F / 2540.0F, 2)
        sz.Height = Math.Round(sz.Height * 72.0F / 2540.0F, 2)

        ' ページを追加し、サイズを設定します。
        If i > 0 Then
            _c1pdf.NewPage()
        End If
        _c1pdf.PageSize = sz

        ' ページを PDF ドキュメントに描画します。
        _c1pdf.DrawImage(page, _c1pdf.PageRectangle())
    End If
Next

C#
コードのコピー
// ドキュメントをメタファイルのリストとしてページごとに1つ取得します。
ArrayList pages = GetMetafiles();

// ページをループ処理して PDF ドキュメントを作成します。
pdf.Clear();
for (int i = 0; i < pages.Count; i++)
{

    // i 番目のページを取得します。
    Metafile page = (Metafile)Metafile.FromFile(pages[i]);
    if (page == null)
    {
        continue;
    }

    // ページサイズを計算します。
    SizeF sz = page.PhysicalDimension;
    sz.Width  = (float)Math.Round(sz.Width  * 72f / 2540f, 2);
    sz.Height = (float)Math.Round(sz.Height * 72f / 2540f, 2);

    // ページを追加し、サイズを設定します。
    if (i > 0) pdf.NewPage();
    pdf.PageSize = sz;

    // ページを PDF ドキュメントに描画します。
    pdf.DrawImage(page, pdf.PageRectangle());
}

クイックスタートの「手順3/4:ドキュメントの保存」トピックで説明したように、Save メソッドを使用してドキュメントを保存します。

コードはリストから各メタファイルを取得し、そのサイズをポイントで計算(各ページは異なるサイズを持つことができます)してからページに描画します。メタファイルは、レポートエンジン、描画またはチャート作成プログラムなど、メタファイルイメージを作成できる任意のアプリケーションで生成できます。