代码之家  ›  专栏  ›  技术社区  ›  Ivan P.

如何在C#打印文档中设置和打印自定义纸张尺寸?

  •  0
  • Ivan P.  · 技术社区  · 4 年前

    我正在尝试使用PrintDocument并设置打印或条形码热敏打印机的纸张尺寸。因为我附近没有打印机,所以我使用Win10中出现的Microsoft Print To PDF选项。

    在初始化过程中,我有这样的代码: exception during setting custom paper size

    如您所见,我正在尝试为默认纸张尺寸设置自定义纸张尺寸。但是,我不能指定Kind属性,因为它是只读的!RawKind属性没有帮助。

    作为替代方案,我有这样的事件。这也无济于事。它在预览时正确显示页面布局,但在PDF文档中,我观察到默认情况下以A4打印的页面。

    private void PrintDoc_QueryPageSettings(object sender, QueryPageSettingsEventArgs e)
            {
    
                PageSettings nSettings = new PageSettings();
                int properWidthInHundretsOfInches = (int)(handlingClassRef.newconfig.labelParameters.barcodeLabelWidthMM * (1.0 / 25.4) * 100.0);
                int properHeightInHundretsOfInches = (int)(handlingClassRef.newconfig.labelParameters.barcodeLabelHeightMM * (1.0 / 25.4) * 100.0);
                nSettings.PaperSize = new PaperSize("label", (int)properWidthInHundretsOfInches, (int)properHeightInHundretsOfInches);            
                e.PageSettings = nSettings;
    
            }
    

    我知道这个问题 How to print with custom paper size in winforms ,但我真的不明白答案。我应该使用打印机属性操作系统对话框重新配置打印机吗?我宁愿不要求用户以某种方式修改打印机的设置。此外,我希望在打印到pdf探索阶段取得适当的结果。

    如何在C#打印文档中设置和打印自定义纸张尺寸?


    编辑:使用以下行:

    printDoc.DefaultPageSettings.PaperSize = new PaperSize("label", properWidthInHundretsOfInches, properHeightInHundretsOfInches);
    

    没有解决问题。

    结果如下:

    preview is nice and small but printed document is large and has not proper page size

    预览很好,很小,但打印的文档很大,页面大小不合适

    0 回复  |  直到 4 年前
        1
  •  3
  •   Prany    4 年前

    您可以尝试在System下初始化PaperSize类。绘图。打印,然后您可以指定自定义尺寸

    printDoc.DefaultPageSettings.PaperSize = new PaperSize("MyPaper", 600, 800);
    
        2
  •  2
  •   Yousef10    2 年前

    我找到了解决办法!

    简短的回答是:

    printDocument1.DefaultPageSettings.PaperSize = new PaperSize("MyPaper", 700, 900);
    

    为什么打印A4纸大小,而不是完整报告?

    因为 默认虚拟pdf打印机 在Windows中 Microsoft打印到Pdf 使用A4纸张大小,您可以尝试将其从 控制面板 并尝试再次打印。你会注意到 它在pdf输出中包含了更多行 ! 所以别担心,我提到的代码是正确的,但这取决于你使用的打印机。因为打印机只使用一些格式化纸张尺寸,它不会接受超出框架的更多页面。

    See This picture for more explanation

    ..

    首先,我很生气,因为这个问题, 我以为printpreviewDialog1有另一个可打印区域,我试图使其与printdocument1一样精确,然后我注意到它只是一个查看器。 经过数小时的研究和多次尝试,我注意到打印机无法再接受任何行;我正在写一份出纳报告。我需要为热敏打印机制作一张长纸,但当我 测试在 “打印到pdf”打印机,它没有在预览控件上打印所有行,因为它只是打印到A4尺寸,更多也不少!