首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用不同打印机托盘c#打印PDF

使用不同打印机托盘c#打印PDF
EN

Stack Overflow用户
提问于 2016-07-20 22:21:54
回答 1查看 2.1K关注 0票数 2

有没有办法打印PDF并选择要以编程方式使用的纸盘?

我愿意接受一些建议,比如将PDF转换为不同的格式并从那里打印。

我可以使用PaperSource()和PrintDocument()打印到正确的托盘。是否可以将PDF转换为这些函数可以理解的格式?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-20 09:10:36

基于从像here on MSDN这样的东西获得纸盘PaperSource,如果你不介意使用Ghostscript.NET,这对你来说应该是有效的:

代码语言:javascript
复制
public void PrintPdf(string filePath, string printQueueName, PaperSource paperTray)
{
    using (ManualResetEvent done = new ManualResetEvent(false))
    using (PrintDocument document = new PrintDocument())
    {
        document.DocumentName = "My PDF";
        document.PrinterSettings.PrinterName = printQueueName;
        document.DefaultPageSettings.PaperSize = new PaperSize("Letter", 850, 1100);
        document.DefaultPageSettings.PaperSource = paperTray;
        document.OriginAtMargins = false;

        using (var rasterizer = new GhostscriptRasterizer())
        {
            var lastInstalledVersion =
                GhostscriptVersionInfo.GetLastInstalledVersion(
                        GhostscriptLicense.GPL | GhostscriptLicense.AFPL,
                        GhostscriptLicense.GPL);

            rasterizer.Open(filePath, lastInstalledVersion, false);

            int xDpi = 96, yDpi = 96, pageNumber = 0;

            document.PrintPage += (o, p) =>
            {
                pageNumber++;
                p.Graphics.DrawImageUnscaledAndClipped(
                    rasterizer.GetPage(xDpi, yDpi, pageNumber),
                    new Rectangle(0, 0, 850, 1100));
                p.HasMorePages = pageNumber < rasterizer.PageCount;
            };

            document.EndPrint += (o, p) =>
            {
                done.Set();
            };

            document.Print();
            done.WaitOne();
        }
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38483897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档