更改默认打印机设置后打印PDF文件

4
Google/Bing没有提供任何解决方案来解决我的以下问题,希望有人能帮助我:
我们需要在基于C#的程序中打印各种PDF文件。在打印之前,我们必须配置打印机,例如将方向设置为横向。
我尝试更改默认打印机设置,例如像这样:
PrinterSettings settings = new PrinterSettings();
settings.PrinterName = "\\\\SomeNetworkPrinter\\";
settings.DefaultPageSettings.Landscape = true;
settings.Duplex = Duplex.Horizontal;

我们通过PDFSharp将PDF文件发送到打印机,基本上是可以实现的,但我的设置完全被忽略了。这种方式是否可以更改默认打印机设置?我们有没有机会更改设置并打印我们的PDF文件?
非常感谢您的提前帮助!

2
看这里:pdfSharp printing with page size 看起来你需要修改PDF文件本身。 - George Duckett
如果您能发布调用PDFSharp的代码,可能会提供更多帮助。 - razlebe
谢谢George!我们能否直接在PDF中设置Duplex、PageSize和Orientation等设置? - lakai
嗯,你可以直接在PDF中设置诸如双面打印、方向等设置(例如通过iText),但我们的打印机完全忽略了这些设置。 - lakai
2个回答

1

不,我认为那样做行不通。

你正在创建一个本地 PrinterSettings 对象,该对象可用于配置一个 PrintDocument,然后可以使用 PrintDocument.Print() 将其发送到打印机。

如果你想调用 PDFSharp 来编排打印,它将使用默认的打印机设置,除非你通过 API 以某种方式传递了你的 PrinterSettings 给 PDFSharp?

如果你能够发布用于调用 PDFSharp 的代码,那么这将有助于找出如何实现此目标。


感谢您的评论!我像这个问题中那样调用PDFSharp:http://stackoverflow.com/questions/6277554/pdfsharp-printing-with-page-size我们可以使用PrintDocument打印我们的PDF文件,还是必须使用Acrobat Reader/GhostScript等软件? - lakai

1

回答自己的问题...

经过三天的试错,我认为没有任何机会通过.NET配置打印机并在之后打印PDF。您不能将System.Drawing.Printing.PrintDocument类与PDF结合使用,但是使用PrintDocument似乎是更改打印机设置的先决条件。

我配置打印机的解决方案受到了codeplex上这篇文章的启发:http://www.codeproject.com/KB/dotnet/NET_Printer_Library.aspx

最终打印PDF的方法是通过命令行参数将其发送到Adobe Reader。


1
你好,能否请您提供一下命令行参数传递的代码,并使用此链接http://www.codeproject.com/KB/dotnet/NET_Printer_Library.aspx来设置打印机设置,因为我无法将这两者结合起来。谢谢。 - Jatin
你能发一下你用的代码吗?Codeproject上的代码不是很好。 - jle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接