簡體   English   中英

WPF打印中的字體大小更改

[英]Font size changes in print wpf

我有一個非常基本的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>&nbsp;&nbsp;</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>&nbsp;&nbsp;</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>&nbsp;&nbsp;</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。

字體大小的更改是由縮放以適合頁面大小引起的。 如果要顯示如此長的字母序列,則需要包裝單元格的內容。

嘗試通過以下方式修改html:

"<table border='0' style=\"table-layout: fixed; width: 100%;\" margin-right='20'>"
.....
"<td style=\"word-wrap: break-word\" ><font size='3'>" + DscTb.Text + "</font></td>"

結果:

結果

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM