将 PDF 文件附加到打印对话框
Attach a PDF File to a Print Dialog
我正在尝试将 PDF 文件附加到打印对话框,但我还没有找到执行此操作的方法。
我正在使用 WPF 应用程序,我有一些与打印相关的代码,如下所示:
private void Imprimir()
{
try
{
FixedDocument document = null;
PageContent pageContent = null;
FixedPage fixedPage = null;
PrintDialog printDlg = new PrintDialog();
if (printDlg.ShowDialog() != true)
return;
document.DocumentPaginator.PageSize = new System.Windows.Size(1400, 1450);
fixedPage.Width = document.DocumentPaginator.PageSize.Width;
fixedPage.Height = document.DocumentPaginator.PageSize.Height;
fixedPage.Margin = new Thickness(96, 96, 0, 0);
fixedPage.Children.Add(this);
((System.Windows.Markup.IAddChild)pageContent).AddChild(fixedPage);
document.Pages.Add(pageContent);
printDlg.PrintDocument(document.DocumentPaginator, "Impresion Cierre");
fixedPage.Children.Clear();
}
catch (Exception ex)
{
System.Windows.MessageBox.Show(ex.Message);
}
}
但是,通过这种方式,我只是打印一个添加到固定页面的 UI 元素。
我一直在寻找其他代码,但一无所获。
所以,我不知道是否可以将本地存储的 PDF 文件添加到打印对话框?
感谢您的帮助...
嗯,您不能使用 PrintDialog 执行此操作。根据您的目标,有多种选择:
var printQueue = LocalPrintServer.GetDefaultPrintQueue();
using (var input = File.OpenRead("path_to_your.pdf")) {
using (var job = printQueue.AddJob()) {
using (var output = job.JobStream) {
input.CopyTo(output);
}
}
}
将以静默方式将文件的打印作业发送到本地打印队列。打印作业是可配置的。
或者,您可以使用 adobe reader 为您处理(或安装在用户计算机上的另一个 pdf reader),但开始处理时将您的 pdf 路径作为 FileName 和 Verb="print".
另一种选择是使用第三方工具(如 ghostscript),它可以帮助您。
我正在尝试将 PDF 文件附加到打印对话框,但我还没有找到执行此操作的方法。
我正在使用 WPF 应用程序,我有一些与打印相关的代码,如下所示:
private void Imprimir()
{
try
{
FixedDocument document = null;
PageContent pageContent = null;
FixedPage fixedPage = null;
PrintDialog printDlg = new PrintDialog();
if (printDlg.ShowDialog() != true)
return;
document.DocumentPaginator.PageSize = new System.Windows.Size(1400, 1450);
fixedPage.Width = document.DocumentPaginator.PageSize.Width;
fixedPage.Height = document.DocumentPaginator.PageSize.Height;
fixedPage.Margin = new Thickness(96, 96, 0, 0);
fixedPage.Children.Add(this);
((System.Windows.Markup.IAddChild)pageContent).AddChild(fixedPage);
document.Pages.Add(pageContent);
printDlg.PrintDocument(document.DocumentPaginator, "Impresion Cierre");
fixedPage.Children.Clear();
}
catch (Exception ex)
{
System.Windows.MessageBox.Show(ex.Message);
}
}
但是,通过这种方式,我只是打印一个添加到固定页面的 UI 元素。 我一直在寻找其他代码,但一无所获。 所以,我不知道是否可以将本地存储的 PDF 文件添加到打印对话框?
感谢您的帮助...
嗯,您不能使用 PrintDialog 执行此操作。根据您的目标,有多种选择:
var printQueue = LocalPrintServer.GetDefaultPrintQueue();
using (var input = File.OpenRead("path_to_your.pdf")) {
using (var job = printQueue.AddJob()) {
using (var output = job.JobStream) {
input.CopyTo(output);
}
}
}
将以静默方式将文件的打印作业发送到本地打印队列。打印作业是可配置的。
或者,您可以使用 adobe reader 为您处理(或安装在用户计算机上的另一个 pdf reader),但开始处理时将您的 pdf 路径作为 FileName 和 Verb="print".
另一种选择是使用第三方工具(如 ghostscript),它可以帮助您。