2010-09-20 5 views
4

J'essaie d'imprimer un tiff multidimensionnel. Ce tiff a 3 pages en utilisant la variable imagetoprint. J'ai donc écrit le code suivant, qui imprime malheureusement la première dimension. Tous les autres sont imprimés sur du papier vide. Si je sauvegarde l'image de la mémoire dans un fichier, irfanview affiche toutes les pages correctement ...Impression multipage Tiff avec C#

Qui peut me donner un indice?

public void print(Bitmap imageToPrint, string printerName, int pagesToPrint) 
{ 
    try 
    { 
    printmap = imageToPrint; 

    cur_page = 0; 
    max_pages = pagesToPrint; 

    m.Top = 1 * dpi; // Set a 1' margin, from the top 
    m.Left = 1.25f * dpi; // Set a 1.25' margin, from the left 
    m.Bottom = printmap.Height - m.Top; // 1', from the bottom 
    m.Right = printmap.Width; // rechter Rand so weit wie es eben geht 
    m.Width = printmap.Width - (m.Left * 2); // Get the width of our working area 
    m.Height = printmap.Height - (m.Top * 2); // Get the height of our working area 

    pd.PrintPage += new PrintPageEventHandler(pd_PrintPage); 
    if (printerName != "") 
    pd.DefaultPageSettings.PrinterSettings.PrinterName = printerName; 
    pd.DefaultPageSettings.Color = true; 
    pd.DefaultPageSettings.PrinterSettings.PrintFileName = "tiffprint"; 
    pd.DocumentName = "InstantFormsPrinting"; 
    if (m.Width > m.Height) 
    { 
    pd.DefaultPageSettings.Landscape = true; 
    } 
    pd.Print(); // Print 

    } 
    catch (Exception ex) 
    { 
    Console.WriteLine("Error during print preparation:" + ex.Message); 
    } 
} 

// Our printing event 
public void pd_PrintPage(object sender, PrintPageEventArgs e) 
{ 
    Rectangle crop = new Rectangle(1, 1, 200, 200); 

    try 
    {    
    printmap.SelectActiveFrame(FrameDimension.Page, cur_page); 
    e.Graphics.DrawImageUnscaled(printmap, new Point(0, 0)); 

    ++cur_page; 
    e.HasMorePages = (cur_page < max_pages); 
    } 
    catch (Exception ex) 
    { 
    Console.WriteLine("Error during print operation:" + ex.Message); 
    } 
} 

Sur Page 2 pd_PrintPage thows une exception "problème général RDB"

Je ne sais pas jusqu'à présent. Ce serait très bien si quelqu'un pouvait aider.

+0

Pour fonctionner, mettez un exemple de fichier .tiff avec ce problème sur un service de partage de fichiers. –

+0

Votre code a fonctionné pour moi. Merci! – Ryan

Répondre

3

Vous pouvez extraire les pages en une seule bitmaps avant de lancer l'impression.

+0

Cette approche fonctionne pour moi. – unclepaul84