2017-09-21 1 views
0

Je travaille sur une application C# WPF qui crée des rapports PDF. Après avoir créé des fichiers, j'ai besoin de les imprimer. Les fichiers créés sont au format A7 et stockés dans le même répertoire.C# WPF Imprimer pdf plusieurs pages par feuille

Pour aider la forêt, je veux imprimer 4 fichiers sur une feuille de papier :-)

Je suis en mesure d'imprimer le fichier par fichier. J'ai essayé de définir la préférence de l'imprimante pour empiler 4 fichiers sur une feuille mais il continue d'imprimer, un fichier par feuille.

J'ai cherché sur le Net pour trouver une solution, mais je ne trouve pas mon chemin.

Des idées pour y parvenir?

Merci pour votre conseiller

+0

s'il vous plaît fournir votre code actuel –

+0

Plus qu'un problème de codage, il est un problème de stratégie. Pour l'instant j'utilise Free.spire.pdf pour imprimer un seul fichier par feuille. – JulBat

+0

Si je vous comprends bien - vous créez des fichiers d'une seule page et vous voulez sélectionner 4 fichiers et les imprimer sur une seule feuille de papier. Pour ce faire, vous devez lire chaque fichier sélectionné dans votre application et créer un nouveau document temporaire avec les quatre fichiers disposés comme vous le souhaitez et l'imprimer. Vous pouvez créer un modèle de document avec quatre images de la bonne taille et [convertir le pdf en image] (https://code.google.com/archive/p/lib-pdf/) pour l'impression. (Je n'ai pas utilisé la bibliothèque pour laquelle je vous ai donné un lien - en donnant simplement le lien comme suggestion) – PaulF

Répondre

0

vous pouvez render the pdf files into images - concaténer les et envoyer à l'imprimante.

Ou vous pouvez utiliser l'exemple de code suivant (comme exemple, je l'ai utilisé PDF Apitron Kit):

using System; 
using System.Collections.Generic; 
using System.IO; 

using Apitron.PDF.Kit.FixedLayout; 
using Apitron.PDF.Kit.FixedLayout.Content; 

public void CombinePDFDocuments() 
    { 
     using (Stream stream1 = new FileStream("input1.pdf", FileMode.Open, FileAccess.Read)) 
     using (Stream stream2 = new FileStream("input2.pdf", FileMode.Open, FileAccess.Read)) 
     using (Stream stream3 = new FileStream("input3.pdf", FileMode.Open, FileAccess.Read)) 
     using (Stream stream4 = new FileStream("input4.pdf", FileMode.Open, FileAccess.Read)) 
     { 
      using (FixedDocument doc1 = new FixedDocument(stream1)) 
      using (FixedDocument doc2 = new FixedDocument(stream2)) 
      using (FixedDocument doc3 = new FixedDocument(stream3)) 
      using (FixedDocument doc4 = new FixedDocument(stream4)) 
      { 
       using (FixedDocument result = new FixedDocument()) 
       { 
        Page page = new Page(Boundaries.A4); 
        result.Pages.Add(page); 

        // Left bottom 
        page.Content.AppendContent(doc1.Pages[0].Content); 

        // Left Top 
        page.Content.SetTranslate(0, Boundaries.A7.Height); 
        page.Content.AppendContent(doc2.Pages[0].Content); 

        // Right Top 
        page.Content.SetTranslate(Boundaries.A7.Width, 0); 
        page.Content.AppendContent(doc3.Pages[0].Content); 

        // Right Bottom 
        page.Content.SetTranslate(0, -Boundaries.A7.Height); 
        page.Content.AppendContent(doc4.Pages[0].Content); 

        using (Stream outStream = new FileStream("out.pdf", FileMode.Create, FileAccess.ReadWrite)) 
        { 
         result.Save(outStream); 
        }       
       } 
      } 
     } 
    }