印刷したい非常に基本的なWPFフォームがあります
<Grid x:Name="grid">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock Text="Name" FontSize="20" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Column="0" Grid.Row="0"/>
<TextBox Text="Name" FontSize="20" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Column="1" Grid.Row="0" Height="60" x:Name="NameTb" Width="200" ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto"/>
<TextBlock Text="ID" FontSize="20" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Column="0" Grid.Row="1"/>
<TextBox Text="ID" FontSize="20" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Column="1" Grid.Row="1" x:Name="IdTb" Height="60" Width="200" ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto"/>
<TextBlock Text="Description" FontSize="20" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Column="0" Grid.Row="2"/>
<TextBox Text="Description" FontSize="20" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Column="1" Grid.Row="2" x:Name="DscTb" Height="60" Width="200" ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto"/>
<Button Content="Print" Grid.Column="1" Grid.Row="3" Width="150" Height="30" Click="Print_Click"/>
</Grid>
コードビハインドは次のとおりです。
private void Print_Click(object sender,RoutedEventArgs e)
{
WebBrowser wb = new WebBrowser();
bool PrintFired = true;
StringBuilder printString = new StringBuilder("<head><meta http-equiv='Content-Type' content='text/html;charset=UTF-8'></head>");
printString.Append("<table border='0' margin-right ='20'><tr><td><b><font size='3'>" +"Name" + "</font>></b></td><td> </td><td>");
//printString.Append(explanation.EngagementName);
printString.Append("<font size='3'>" + NameTb.Text + "</font>");
printString.Append("</td></tr><tr><td></td></tr>");
printString.Append("<tr><td><b><font size='3'>" + "ID" + "</font></b></td><td> </td><td>");
printString.Append("<font size='3'>" + IdTb.Text + "</font>");
printString.Append("</td></tr><tr><td></td></tr>");
printString.Append("<tr><td valign ='top'><b><font size='3'>" + "Description" + "</font></b></td><td> </td><td>");
printString.Append("<font size='3'>" + DscTb.Text + "</font>");
printString.Append("</td></tr></table>");
wb.NavigateToString(printString.ToString());
var d = new System.Windows.Threading.DispatcherTimer();
d.Interval = TimeSpan.FromMilliseconds(250);
d.Tick += new EventHandler((sender1, args) =>
{
if (PrintFired == true && ((mshtml.IHTMLDocument2)(wb.Document)).readyState != "loading")
{
PrintFired = false;
mshtml.IHTMLDocument2 doc = wb.Document as mshtml.IHTMLDocument2;
doc.execCommand("Print", true, null);
d.Stop();
}
});
d.Start();
}
問題は、説明フィールド (またはその他のフィールド) に大量のテキストを入力すると、印刷時にフォント サイズが縮小することです。
PS-これを印刷する必要はありません。PDFとして保存できます。