无需其他工具即可从控制台应用程序打印PDF文件

丽拉1220

新成员
已加入
2016年1月29日
留言内容
3
编程经验
Beginner
你好,
我需要一些建议。我的情况如下:
我有一个带PDF文件的zip文件夹。我遍历zip文件夹中的所有PDF并打印每个PDF。
Visual Studio本身及其提供的功能可能吗?还是我本质上需要iTextPDF或PDFSharp之类的工具?
我已经研究了很多小时,但找不到解决方案。
我的主要问题是,无法找到将要打印的PDF文档与PrintDocument对象连接的方法。我无法将文档的路径提供给PrintDocument。它也没有用于传递文档所在路径的属性。
那么如何告诉我要打印哪个文件呢?
因此,当我显示打印预览时,它全部为空白。这是因为我无法从控制台应用程序本地打印PDF吗?还是有可能以某种方式?
我将非常感谢您的帮助。
先感谢您! :)
丽拉

我在控制台应用程序中使用的C#代码的部分摘录:

PrintDialog pDialog = new PrintDialog();

PrintDocument printDoc =新的PrintDocument();

打印Doc.DocumentName = ("Print Document");


如果(pDialog.ShowDialog()== DialogResult.OK)
{
打印Doc.PrinterSettings = pDialog.PrinterSettings;
pDialog.Document = printDoc;
var settingsValid = printDoc.PrinterSettings.IsValid;
}
如果(settingsValid)
{
PrintPreviewDialog p =新的PrintPreviewDialog();
p.Document = printDoc;
尝试
{
var r = p.ShowDialog();
打印Doc.Print();
}
 

约翰·H

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
1,051
地点
挪威
编程经验
10+
.Net框架中没有pdf文件的内置功能。如果系统中安装了pdf文档查看器应用程序,则可以使用Process / ProcessStartInfo和动词将打印重定向到该应用程序"print"让该应用程序打印文档。
 

丽拉1220

新成员
已加入
2016年1月29日
留言内容
3
编程经验
Beginner
谢谢约翰的回复!

对于任何对代码感兴趣的人,我都可以使用Adobe Reader使控制台应用程序正常工作。我必须克服的一个困难是需要使用对话框中的用户选择的特定打印机进行打印的要求。

以下是技巧。它也正在安静地打印,在7秒钟后关闭Adobe Reader:

PrintDialog pDialog = new PrintDialog();
如果(pDialog.ShowDialog()== DialogResult.OK)
{
DirectoryInfo unzippedFolder =新的DirectoryInfo(zibname);

foreach(unzippedFolder.GetFiles()中的FileInfo文件)//打印未压缩文件夹中的每个PDF文件
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = @"C:\ Program Files(x86)\ Adob​​e \ Acrobat Reader DC \ Reader \ AcroRd32.exe";
流程= new Process();
startInfo.Arguments = String.Format("/h /t "{0}" "{1}"", file.FullName, pDialog.PrinterSettings.PrinterName);//file.FullName: full path of PDF file startInfo.CreateNoWindow = true;
startInfo.ErrorDialog = false;
startInfo.UseShellExecute = false;
进程= Process.Start(startInfo);
如果(!process.WaitForExit(7000))
{
// kill Adobe Reader
process.Kill();
}
}

最好的祝福
丽拉
 

丽拉1220

新成员
已加入
2016年1月29日
留言内容
3
编程经验
Beginner
谢谢约翰,

我尝试使用"printTo",但是如果不指定它就无法正常工作
startInfo.FileName =
@"C:\ Program Files(x86)\ Adob​​e \ Acrobat Reader DC \ Reader \ AcroRd32.exe";

我希望有某种方法可以避免必须指定Adobe Reader .exe的路径,因为这意味着每当用户升级其Adobe Reader版本时,我的程序都会停止工作,因为该路径不正确。

有没有办法解决?
 
最佳 底部