2016-11-28 47 views
1

Datagridに表示されているすべての選択されたファイルを印刷します。FinePrintを使用して複数のファイルを1つの印刷ジョブとして印刷する

私はFinePrintを使用したいので、それらをすべてプリントキューに追加したいと思います。

FinePrintは、プリントキュー内のすべてのドキュメントを1つのファイルに追加して印刷できるプリンタドライバです。 Windowsエクスプローラでファイルを選択し、Printを右クリックします。 FinePrintをデフォルトプリンタとして選択すると、FinePrintウィンドウが開き、選択したすべてのファイルが1つのファイルに添付されます。次に、ページにスタンプを設定するなどの他の処理を行うことができます。

私のWPFプロジェクトで同じことを作成したいのですが、ファイルを選択してボタンをクリックするだけで十分です。

EDIT:

完全な方法:

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"); 
       } 
      } 
     } 
    } 
} 

それは私が直接、ファイルの先頭に、docオブジェクトを作成XamlParseExceptionをスローします。

答えて

0

基本的には、レジストリキー(カウンタ)を設定して通常の方法で印刷します(1つずつ).PickPrintはカウンタを減らして1つのジョブに追加します。

から:CollectJobsレジストリ設定を使用してhttp://fineprint.com/fpsupport-topic/fineprint-developer-kit/

、FinePrintは、それらを印刷する前に、 複数の印刷ジョブを収集します。

DWORDレジストリキーは次のとおりです。

HKEY_CURRENT_USER /ソフトウェア/ FinePrint ソフトウェア/ FinePrint8/FinePrinters/FinePrint/CollectJobs

したい印刷ジョブの数にCollectJobs値を設定し に組み合わせます。 FinePrintは印刷ジョブを受信するたびに、 カウンタをデクリメントします。カウンタ値は、次のジョブが送信される前に、それが をデクリメントされていることを確認する必要があります。すべてのジョブが を収集して出力デバイスに送信すると、カウンタは ゼロに設定されます。

+0

どういう意味ですか?何も思いつきません。私はPDFファイルを印刷するためにたくさんの例を見つけましたが、これだけを印刷したくありません。私はすべてのファイルを印刷したいだけです。 – Only3lue

+0

これは私かもしれませんが、あなたのコメントは私には意味がありません。私はあなたの質問を "1つの印刷ジョブに複数のファイルを追加するにはどうすればいいですか"と解釈しました。いくつかのサンプルコードで質問を洗練し、問題の内容を説明してください。 – SilentStorm

+0

これでレジストリキーを作成する方法がわかりません。そして、私はPrintDialogを表示し、次にPrintDocumentメソッドを使用して、DataGridで選択したすべてのファイルを印刷したいだけです。しかし、私はDocumentPaginatorが必要ですが、私はそれを作成するアイデアはありません。なぜなら、私は多くの異なる拡張機能を持っていて、それを構築できないからです。 – Only3lue

関連する問題