C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[7]: 印刷時の余白設定について


(過去ログ 177 を表示中)

[トピック内 10 記事 (1 - 10 表示)]  << 0 >>

■101420 / inTopicNo.1)  印刷時の余白設定について
  
□投稿者/ こいち (23回)-(2023/02/19(Sun) 18:22:06)

分類:[VB.NET/VB2005 以降] 

いつもお世話になっております。

Visual Basic2013 で開発しております。

自作の印刷ダイアログフォームを作成して、指定したイメージの印刷をしようと思っているのですがどうも
余白の調整が上手くいきません。

ちょっと端折るのですが、以下のような感じで印刷設定しています。

                Using PD As New PageSetupDialog()

                    (省略)

                    PD.EnableMetric = True

                    ' 用紙余白設定
                    PD.Document.DefaultPageSettings.Margins = New System.Drawing.Printing.Margins(frmPrint.dblPaperMarginLeft, _
                                                                                                 frmPrint.dblPaperMarginRight, _
                                                                                                  frmPrint.dblPaperMarginTop, _
                                                                                                  frmPrint.dblPaperMarginBottom)

                    PD.Document.OriginAtMargins = True

                    (省略)

                    '印刷を開始する
                    PD.Document.Print()

                End Using

frmPrint.dblPaperMarginLeft には、mm単位の小数値が入っております。
実際に印刷された結果を見ると、指定した数値以上の余白が表示されており、調整に困っております。

何かやり方が間違っておりますでしょうか。

引用返信 編集キー/
■101422 / inTopicNo.2)  Re[1]: 印刷時の余白設定について
□投稿者/ furu (200回)-(2023/02/20(Mon) 09:29:38)
No101420 (こいち さん) に返信
> 何かやり方が間違っておりますでしょうか。
ハードマージン(System.Drawing.PrintingのHardMarginX,HardMarginY)は
考慮されていますか?

考慮されていなければ、通常のレーザープリンタで5mm程ずれます。
引用返信 編集キー/
■101426 / inTopicNo.3)  Re[1]: 印刷時の余白設定について
□投稿者/ shu (1291回)-(2023/02/20(Mon) 14:34:15)
No101420 (こいち さん) に返信

> frmPrint.dblPaperMarginLeft には、mm単位の小数値が入っております。
Marginは1/100インチ単位なので
mmを使用したい場合、25.4で割って100を掛けた値を指定する必要があります。
後はfuruさんの提示されたHardMarginX,HardMarginYを考慮して
HardMarginXをleftから引いて
HardMarginYをtopから引く
必要があります。
引用返信 編集キー/
■101428 / inTopicNo.4)  Re[2]: 印刷時の余白設定について
□投稿者/ こいち (24回)-(2023/02/20(Mon) 23:42:58)
2023/02/20(Mon) 23:45:14 編集(投稿者)

No101422 (furu さん) に返信

> ハードマージン(System.Drawing.PrintingのHardMarginX,HardMarginY)は
> 考慮されていますか?
>
> 考慮されていなければ、通常のレーザープリンタで5mm程ずれます。

すみません、遅くなりました。ありがとうございます。
ハードマージンというのは、インクジェットで印刷した時に微妙に出る余白みたいなやつですよね。
New System.Drawing.Printing.Margins(0, 0, 0, 0) としても微妙な余白が出るのを確認しておりました。

ロジックの中では考慮しておりませんでした。
ちょっと組み込んでみようと思います。
引用返信 編集キー/
■101429 / inTopicNo.5)  Re[2]: 印刷時の余白設定について
□投稿者/ こいち (25回)-(2023/02/20(Mon) 23:44:49)
No101426 (shu さん) に返信

>>frmPrint.dblPaperMarginLeft には、mm単位の小数値が入っております。
> Marginは1/100インチ単位なので
> mmを使用したい場合、25.4で割って100を掛けた値を指定する必要があります。
> 後はfuruさんの提示されたHardMarginX,HardMarginYを考慮して
> HardMarginXをleftから引いて
> HardMarginYをtopから引く
> 必要があります。

PD.EnableMetric = True
これを入れておけば、mm単位で指定できると思っておりました。
上記の計算式を入れてみて試してみます。ありがとうございます。
また、明日調査してみます!

引用返信 編集キー/
■101431 / inTopicNo.6)  Re[3]: 印刷時の余白設定について
□投稿者/ こいち (26回)-(2023/02/21(Tue) 22:55:48)
改めてご報告です・・・

やっぱり、印刷された結果がおかしいです。

 ' 用紙余白設定
  PD.Document.DefaultPageSettings.Margins = New System.Drawing.Printing.Margins(10, 10, 10, 0)

とした場合、上と左にそれぞれ 20mm(2cm)の余白が出力される結果となりました。

上の指定だと、左10、右10、上10 ですよね?何がいけないのでしょうか・・・
(ごちゃごちゃするので、端折っているのですが、shuさんから教わったインチ変換の計算は入れております)

引用返信 編集キー/
■101432 / inTopicNo.7)  Re[4]: 印刷時の余白設定について
□投稿者/ shu (1292回)-(2023/02/22(Wed) 06:56:05)
No101431 (こいち さん) に返信
> 改めてご報告です・・・
>
> やっぱり、印刷された結果がおかしいです。
>
> ' 用紙余白設定
> PD.Document.DefaultPageSettings.Margins = New System.Drawing.Printing.Margins(10, 10, 10, 0)
>
> とした場合、上と左にそれぞれ 20mm(2cm)の余白が出力される結果となりました。
>
> 上の指定だと、左10、右10、上10 ですよね?何がいけないのでしょうか・・・
> (ごちゃごちゃするので、端折っているのですが、shuさんから教わったインチ変換の計算は入れております)

この指定では
左:(HardMarginX + 10) / 100 * 25.4 mm
上:(HardMarginY + 10) / 100 * 25.4 mm
となると思います。
誤差はあるかもしれないので
0,0,0,0
での余白を確認し調整するのがよいと思います。



引用返信 編集キー/
■101434 / inTopicNo.8)  Re[5]: 印刷時の余白設定について
□投稿者/ こいち (27回)-(2023/02/23(Thu) 23:13:44)
No101432 (shu さん) に返信
> この指定では
> 左:(HardMarginX + 10) / 100 * 25.4 mm
> 上:(HardMarginY + 10) / 100 * 25.4 mm
> となると思います。
> 誤差はあるかもしれないので
> 0,0,0,0
> での余白を確認し調整するのがよいと思います。

遅くなりました。ありがとうございます。
HardMarginX、HardMarginY ともデバッグで確認したら、0が返ってきておりました。

どうも動かしていて気付いたんですが、上と下の余白が足されて上に、左と右が足されて左に余白が出てるようです。
上と左を 0 とし、下と右を 10 として印刷したら 下と右に余白が出てきました。。。
これはどういうことでしょうか・・・
ますます分からなくなってしまいました。
引用返信 編集キー/
■101435 / inTopicNo.9)  Re[6]: 印刷時の余白設定について
□投稿者/ shu (1293回)-(2023/02/24(Fri) 08:41:03)
No101434 (こいち さん) に返信

余白を視認する為に行っている描画処理はどのように行われていますでしょうか?
引用返信 編集キー/
■101472 / inTopicNo.10)  Re[7]: 印刷時の余白設定について
□投稿者/ こいち (28回)-(2023/02/28(Tue) 21:56:31)
No101435 (shu さん) に返信

> 余白を視認する為に行っている描画処理はどのように行われていますでしょうか?

すみません、遅くなりました。描画は以下のようにやっておりました。

    Private Sub pd_PrintPage(ByVal sender As Object, _
            ByVal e As System.Drawing.Printing.PrintPageEventArgs)

        Dim img As Image

     -----省略----

                '画像を描画する
                e.Graphics.DrawImage(img, e.MarginBounds)

     -----省略----

    End Sub

    「画像を描画する」を以下のように修正したら期待する印刷結果になりました。
     e.Graphics.DrawImage(img, 0, 0, e.MarginBounds.Width, e.MarginBounds.Height)


  ありがとうございました!
  

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -