none
Imprimer plusieurs pages RRS feed

  • Question

  • Bonjour, voilà, j'ai un programme qui doit imprimer des fichiers tiff, or certains fichiers sont sur plusieurs pages. Mon souci c'est que je n'ai qu'une seule page qui s'imprime. Voici mon code :

     

     Public Sub impression(ByVal img As String)
            Try
                oImage = Image.FromFile(img)
                AddHandler pd.PrintPage, AddressOf pd_PrintPage
                pd.PrinterSettings.PrinterName = imprimante
                If pd.PrinterSettings.IsValid Then
                    pd.Print()
                    oImage.Dispose()
                Else
                    oImage.Dispose()
                End If
                oImage.Dispose()
            Catch ex As Exception
                oImage.Dispose()
                supprime_erreur()
            End Try
            System.Threading.Thread.Sleep(5000)
        End Sub
    


    Voilà mon code, pour ceux qui me demanderai pourquoi des fichiers tiff et pas d'autres, je ne peux pas faire avec d'autres fichiers tout simplement.

    J'ai vu en relisant d'autre post qu'on pouvait utiliser GetFrameCount ce qui permet de récupérer le nombre de pages et utiliser SelectActiveFrame pour sélectionner la page voulue ce qui devrait permettre d'imprimer tour à tour les différentes pages du fichier TIFF.

    Mais je ne sais pas du tout comment utiliser ces 2 méthodes la ...

     


    Cordialement, maxkun ;)
    • Modifié maxkun jeudi 19 janvier 2012 14:43
    jeudi 19 janvier 2012 13:11

Réponses

  • Bonjour Maxime,

    Je n'ai pas le temps là d'étudier la question, mais voici mon pense-bête qui devrait te combler, généralement en copiant collant chat marche (déclarer les objets indiqués), on peut évidemment imprimer sans visu préalable :

    IMPRESSION
    Impressuin : texte en portrait ou paysage
    Prévisualisation : OBJET = PrintPreviewControl
    Sub Button1_Click(
     i = 0 ' Global affecté à cette seule fonction 
     Me.PrintPreviewControl1.Zoom = 0.75
     Me.PrintPreviewControl1.Rows = 4' nb pages vues en apercu (calcul...)
     Dim PageSetupDialog As New PageSetupDialog()  ' objet = PageSetupDialog
     PageSetupDialog.Document = PrintDocument1
     PageSetupDialog.PageSettings.Landscape = True ' paysage (portrait = False)
     Me.PrintPreviewControl1.Document = Me.PrintDocument1
    End Sub
    
    Impression logique : OBJET = PrintDocument
    Sub Button2_Click(
     i = 0 ' Global affecté à cette seule fonction 
     Dim r As String = MsgBox("Imprimer sur PAPIER", vbQuestion + vbYesNo + 
     vbDefaultButton2)
     If r <> vbYes Then Exit Sub
     Dim PageSetupDialog As New PageSetupDialog() ' objet = PageSetupDialog
     PageSetupDialog.Document = PrintDocument1
     PageSetupDialog.PageSettings.Landscape = True ' paysage (portrait = False)
     Me.PrintDocument1.Print()
    End Sub
    
    Impression physique (papier)
    Sub PrintDocument1_PrintPage(
     Dim police As New Font("Courier New", 12, FontStyle.Regular)
     Dim yPos As Integer = 10 ' pixels
     Do While i < ListBox1.Items.Count
      e.Graphics.DrawString(ListBox1.Items(i), police, Brushes.Black, 10, yPos)
      Select Case i 
       Case 3, 6, 9
         e.HasMorePages = True ' saut de page
          i = i + 1
         Return ' retour saut de page à Me.PrintDocument1.Print()
      End Select
      yPos = yPos + police.GetHeight
      i = i + 1
     Loop
    End Sub
    
    
    


    Cordialement.



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    • Marqué comme réponse maxkun vendredi 3 février 2012 14:32
    vendredi 3 février 2012 12:28

Toutes les réponses

  • Bonjour,

     

    Vous pouvez jeter un coup d'oeil sur le lien suivant, il pourrait vous aider.

    http://www.codeproject.com/Articles/9068/A-simple-TIFF-management-class

     

    Cordialement.

    vendredi 3 février 2012 09:38
    Auteur de réponse
  • Bonjour Maxime,

    Je n'ai pas le temps là d'étudier la question, mais voici mon pense-bête qui devrait te combler, généralement en copiant collant chat marche (déclarer les objets indiqués), on peut évidemment imprimer sans visu préalable :

    IMPRESSION
    Impressuin : texte en portrait ou paysage
    Prévisualisation : OBJET = PrintPreviewControl
    Sub Button1_Click(
     i = 0 ' Global affecté à cette seule fonction 
     Me.PrintPreviewControl1.Zoom = 0.75
     Me.PrintPreviewControl1.Rows = 4' nb pages vues en apercu (calcul...)
     Dim PageSetupDialog As New PageSetupDialog()  ' objet = PageSetupDialog
     PageSetupDialog.Document = PrintDocument1
     PageSetupDialog.PageSettings.Landscape = True ' paysage (portrait = False)
     Me.PrintPreviewControl1.Document = Me.PrintDocument1
    End Sub
    
    Impression logique : OBJET = PrintDocument
    Sub Button2_Click(
     i = 0 ' Global affecté à cette seule fonction 
     Dim r As String = MsgBox("Imprimer sur PAPIER", vbQuestion + vbYesNo + 
     vbDefaultButton2)
     If r <> vbYes Then Exit Sub
     Dim PageSetupDialog As New PageSetupDialog() ' objet = PageSetupDialog
     PageSetupDialog.Document = PrintDocument1
     PageSetupDialog.PageSettings.Landscape = True ' paysage (portrait = False)
     Me.PrintDocument1.Print()
    End Sub
    
    Impression physique (papier)
    Sub PrintDocument1_PrintPage(
     Dim police As New Font("Courier New", 12, FontStyle.Regular)
     Dim yPos As Integer = 10 ' pixels
     Do While i < ListBox1.Items.Count
      e.Graphics.DrawString(ListBox1.Items(i), police, Brushes.Black, 10, yPos)
      Select Case i 
       Case 3, 6, 9
         e.HasMorePages = True ' saut de page
          i = i + 1
         Return ' retour saut de page à Me.PrintDocument1.Print()
      End Select
      yPos = yPos + police.GetHeight
      i = i + 1
     Loop
    End Sub
    
    
    


    Cordialement.



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire
    • Marqué comme réponse maxkun vendredi 3 février 2012 14:32
    vendredi 3 février 2012 12:28
  • Merci à vous, le code de EhJoe est fonctionnel :)
    Cordialement, maxkun ;)
    vendredi 3 février 2012 14:32