[UWP][PDF] 表示するPDFの総ページ数を取得する

前回に引き続き、今回もPDFの操作について見ていきます。

今回は、表示するPDFの総ページ数を取得する方法について見ていきましょう。

PdfDocumentクラスはPageCountというプロパティを持っています。

このプロパティで、表示しようとするPDFのトータルページ数を参照することができます。

以下にコード例を示します。

private async void btnPdfOpen_Click(object sender, RoutedEventArgs e)
{
    // PDFファイルを開くためのピッカーを準備
    var picker = new Windows.Storage.Pickers.FileOpenPicker();
    picker.FileTypeFilter.Add(".pdf");
    Windows.Storage.StorageFile file = await picker.PickSingleFileAsync();

    if (file != null)
    {
        try
        {
            // PDFファイルを読み込む
            pdfDocument = await Windows.Data.Pdf.PdfDocument.LoadFromFileAsync(file);
        }
        catch (Exception ex)
        {

        }
    }

    if ( pdfDocument != null)
    {
        // トータルページ数を取得
        var totalPage = pdfDocument.PageCount.ToString();
    }
}

 

 

[UWP][PDF] パスワード付きのPDFファイルを表示する

前回の記事でPDFファイルを表示する方法を確認しました。

今回は、パスワード付きのPDFファイルを表示する方法を見てみましょう。

前回示したコードで、PdfDocumentクラスのLoadFromFileAsyncメソッドを使用してPDFファイルを読み込みました。このメソッドはオーバーロードがあり、第1引数に表示したいPDFファイルのパスを、第2引数でパスワードを指定します。

パスワードがが正しければ、例外が発生することなく処理が続きます。

前回のコードを以下のように修正することで、パスワードに対応することが可能です。

if (file != null)
{
    try
    {
        // PDFファイルを読み込む
        pdfDocument = await Windows.Data.Pdf.PdfDocument.LoadFromFileAsync(file, "パスワードを表す文字列);
    }
    catch (Exception ex)
    {

    }
}

 

 

[UWP][PDF] PDFファイルを表示する

今回はPDFファイルを表示する方法について見ていきます。

PDFファイルはImageコントロールへの表示が可能です。よってMainPageは以下のようにデザインします。

MainPageのデザイン

 

はじめに、今回のコードを示します。

// PDFドキュメント変数
private Windows.Data.Pdf.PdfDocument pdfDocument;

private async void btnPdfOpen_Click(object sender, RoutedEventArgs e)
{
    // PDFファイルを開くためのピッカーを準備
    var picker = new Windows.Storage.Pickers.FileOpenPicker();
    picker.FileTypeFilter.Add(".pdf");
    Windows.Storage.StorageFile file = await picker.PickSingleFileAsync();

    if (file != null)
    {
        try
        {
            // PDFファイルを読み込む
            pdfDocument = await Windows.Data.Pdf.PdfDocument.LoadFromFileAsync(file);
        }
        catch
        {

        }
    }

    if ( pdfDocument != null)
    {
        // 1ページ目を読み込む
        using (Windows.Data.Pdf.PdfPage page = pdfDocument.GetPage(0))
        {
            // ビットマップイメージの作成
            var stream = new Windows.Storage.Streams.InMemoryRandomAccessStream();
            await page.RenderToStreamAsync(stream);
            Windows.UI.Xaml.Media.Imaging.BitmapImage src = new Windows.UI.Xaml.Media.Imaging.BitmapImage();

            // Imageオブジェクトにsrcをセット
            imgPdf.Source = src;

            // srcに作成したビットマップイメージを流し込む
            await src.SetSourceAsync(stream);
        }
    }
}

それではコードを見ていきましょう。

PDFドキュメントは、Windows.Data.Pdf名前空間にあるPdfDocumentクラスで取り扱うことができます。

はじめにFilePickerを準備して、ユーザーにPDFファイルを選択させます。続いて、選択されたPDFファイルをPdfDocumentクラスが持つLoadFromFileAsyncメソッドで読み込みます。

読み込んだPdfDocumentがnullでないことを確認し、PDFの1ページ目を読み込みます。ページの読み込みは、PdfDocumentクラスのGetPageメソッドを使用します。

ページの読み込みが完了したら、Bitmapイメージにします。

Bitmapイメージが作成できたら、あとは画面に配置しているImageオブジェクトに表示をします。

実行例を以下に示します。

PDF読み込みの実行例

[UWP][カレンダー] 予定を編集する

今回は予定を編集する方法について見ていきましょう。

カレンダーの予定を編集するにはShowAppointmentDetailsAsyncメソッドを使用します。このメソッドの引数には、すでに登録してある予定のIDです。

以下に、予定を編集するダイアログを表示するコードを示します。

private async void btnEdit_Click(object sender, RoutedEventArgs e)
{
    // IDがない場合は処理終了
    if (string.IsNullOrEmpty(this._id)) return;

    // 予定を追加してIDを取得する
    await Windows.ApplicationModel.Appointments.AppointmentManager.ShowAppointmentDetailsAsync(this._id);
}

実行すると以下のように予定を編集をするためのウィンドウが表示されます。

予定の編集

関連記事

[UWP][カレンダー] 予定を削除する

前回はカレンダーに予約を登録する方法について確認しました。

今回は、カレンダーの予定を削除する方法を見ていきましょう。

前回、予定を追加するとユニークなIDが返されることを説明しました。

カレンダーから予定を削除するには、AppointManagerクラスのShowRemoveAppointmentAsyncメソッドに対してこのIDを渡す必要があります。

ShowRemoveAppointmentAsyncメソッドは、指定されたIDの予定を表示し削除するかどうかを聞いてきます。

あとは、ユーザーが削除するかどうかを決定します。

以下に、コード例を示します。

private async void btnDel_Click(object sender, RoutedEventArgs e)
{
    // IDがない場合は処理終了
    if (string.IsNullOrEmpty(this._id)) return;

    // 予定を追加してIDを取得する
    if (await Windows.ApplicationModel.Appointments.AppointmentManager.ShowRemoveAppointmentAsync(this._id, Rect.Empty))
    {
        var dialog = new Windows.UI.Popups.MessageDialog("削除しました");
        await dialog.ShowAsync();
    }
}

以下に実行例を示します。

表示されたダイアログで[削除]ボタンを押すと予定が削除されます。

予定を削除する