【问题标题】:Printing user control cuts off half an inch on top and left打印用户控件在顶部和左侧截断半英寸
【发布时间】:2013-08-22 20:12:21
【问题描述】:

我有一个正在尝试打印的自定义控件。我尝试将窗口上的边距更改为“缩进”我的控件,但它仍然切断了左侧和顶部。我还在打印方法中尝试了以下方法:

private void bttnPrint_Click(object sender, RoutedEventArgs e)
{
    UserControl hddc = HDDC;

    var printDlg = new PrintDialog
        {PrintTicket = {PageOrientation = PageOrientation.Landscape, PageBorderless = PageBorderless.Unknown}};

    //printDlg.PrintTicket.PageMediaSize.PageMediaSizeName = PageMediaSizeName.NorthAmerica11x17;

    if (printDlg.ShowDialog() == true)
    {

        printDlg.PrintVisual(hddc, "HDDC Report");
    }
    else
    {
        MessageBox.Show("Print Canceled");
    }
}

仍然没有快乐。我有一种感觉,我错过了一个愚蠢的设置,但我似乎无法找到它。为什么我的打印在顶部和左侧被切断了?

【问题讨论】:

  • 如果您更改 PageScalingFactor? 会发生什么不是答案,但可能是测试的解决方法。
  • 你的 XAML 是什么? HDDC 是否像 <local:UserControl1 Name="HDDC" /> 一样在那里定义?
  • @blins:其实是<UserControls:HddcReport x:Name="HDDC" />
  • 我无法重现确切的问题。我正在打印到 PDF 并以这种方式检查结果。我确实看到如果我简单地将控件拖动到足够大以至于它的物理尺寸大于纸张尺寸,我可以让它在右侧截断,但这并不完全符合您的描述,因为它仍然与左上角对齐好的。
  • @Blins:如果我对 PDF 执行此操作,它也可以正常工作。但是当我打印到打印机时,就会发生截断。

标签: c# wpf printing


【解决方案1】:
public void Printing() {
   try {
     streamToPrint = new StreamReader (filePath);
     try {
       PrintDocument prd = new PrintDocument(); 
       prd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
       prd.PrinterSettings.PrinterName = printer;
       // Set the page orientation to landscape.
       prd.DefaultPageSettings.Landscape = true;
       prd.Print();
     } 
     finally {
       streamToPrint.Close() ;
     }
   } 
   catch(Exception ex) { 
     MessageBox.Show(ex.Message);
   }
 }

命名空间:System.Drawing.Printing

或者也许这个链接可以帮助你 Page truncate in right side for landscape orientation with trimmargins using PdfSharp

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    • 2011-05-22
    • 1970-01-01
    相关资源
    最近更新 更多