none
xpsドキュメントファイルの縦 横サイズを取得したい RRS feed

  • 質問

  • おせわになります。

    さっそくですが、タイトルの件を取得して自動で縦印刷、横印刷を切り替えようと考えています

          Size s = newFixedDocument.DocumentPaginator.PageSize;

                if (s.Height < s.Width)
                {
                    pDialog.PrintTicket.PageOrientation = PageOrientation.Landscape;
                }

    newFixedDocument.DocumentPaginator.PageSizeは推奨値ということなのでこれではないようです。

    どなたかxpsのドキュメントの縦横サイズあるいは縦印刷横印刷プロパティ等の取得方法をご指導いただけないでしょうか。

    2015年5月21日 21:00

すべての返信

  • こんな

    var XpsDocument xd = new System.Windows.Xps.Packaging.XpsDocument("test.xps", System.IO.FileAccess.Read);
    var seq = xd.GetFixedDocumentSequence();
    seq.DocumentPaginator.ComputePageCount();
    int count = seq.DocumentPaginator.PageCount;
    
    for (int p = 0; p < count; p++)
    {
        var page = seq.DocumentPaginator.GetPage(p);
        Size size = page.Size;
        double ih = size.Height / 96;
        double iw = size.Width / 96;
        double ch = size.Height / 96 * 2.54;
        double cw = size.Width / 96 * 2.54;
    
        System.Diagnostics.Debug.WriteLine(string.Format("Page={0}\t{1:f2}inx{2:f2}in\t{3:f1}cmx{4:f1}cm", p, iw, ih, cw, ch));
    }
    #必ずしも全ページが同じ大きさとは限らない

    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    2015年5月22日 0:01
  • gekka

    早速のご指導ありがとうございます。

    これこそばっちり求めていた処理なのです。結構悩んでいましたが、すっきりさせていただきました。

    深く感謝申し上げます。

    2015年5月22日 20:50