我想打印显示在Datagrid中的所有选定文件。
我不想一个接一个地打印它们,我希望所有人都将它们添加到打印队列中,因为我想使用FinePrint。
FinePrint是一种打印机驱动程序,可以将打印队列中的所有文档添加到单个文件中进行打印。在Windows资源管理器中,您可以选择文件并右键单击它们上的Print
。当FinePrint被选为默认打印机时,它会打开FinePrint窗口并将所有选定的文件附加到一个文件中。然后你可以在页面上做其他东西,如设置标记。
我想在我的WPF项目中创建相同的东西,但仅仅选择文件并单击按钮就足够了。
修改
完整的方法:
void btnPrint_Click(object sender, RoutedEventArgs e)
{
List<ZeichnungInDB> selectedItemsList = dataOutOfDb.SelectedItems.Cast<ZeichnungInDB>().ToList();
if(selectedItemsList.Count > 0)
{
PrintDialog printDialog = new PrintDialog();
FileInfo fileInfo;
if (printDialog.ShowDialog() == true)
{
foreach (ZeichnungInDB zeichnung in selectedItemsList)
{
fileInfo = new FileInfo(@"..." + zeichnung.Zeichnungsnummer + "_" + zeichnung.Index + "_VIN_" + zeichnung.Volante_Index + zeichnung.Extension);
using (FileStream file = fileInfo.OpenRead())
{
System.Windows.Markup.ParserContext context = new System.Windows.Markup.ParserContext();
context.BaseUri = new Uri(fileInfo.FullName, UriKind.Absolute);
object doc = (System.Windows.Markup.XamlReader.Load(file, context));
DocumentPaginator paginator = ((IDocumentPaginatorSource)doc).DocumentPaginator;
printDialog.PrintDocument(paginator, "Printing from MMS");
}
}
}
}
}
它会直接在File的开头抛出一个XamlParseException
来创建doc对象。
答案 0 :(得分:0)
基本上你设置一个注册表项(计数器),然后以正常方式打印它们(一个接一个)FinePrint减少计数器并将它们添加到一个作业中。
来自:http://fineprint.com/fpsupport-topic/fineprint-developer-kit/
使用CollectJobs注册表设置,FinePrint将收集 打印前打印多个打印作业。
DWORD注册表项是:
HKEY_CURRENT_USER /软件/的FinePrint 软件/ FinePrint8 / FinePrinters /的FinePrint / CollectJobs
将CollectJobs值设置为您想要的打印作业数 结合。每次FinePrint收到打印作业时,它都会递减 计数器。应检查计数器值以确保它具有 在下一份工作发出之前已经减少了。当所有的工作都有 收集并发送到输出设备,计数器设置为 零。