IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Impression : taille d'impression différente entre imprimante et générateur de PDF (PDFCreator)


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Miles Raymond
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 189
    Par défaut Impression : taille d'impression différente entre imprimante et générateur de PDF (PDFCreator)
    Bonjour,

    Dans une de mes applications je génère une image d'une PictureBox modifiée par l'utilisateur et je l'imprime. Le problème c'est que, bien que je définisse toutes les marges à zéro, lorsque j'imprime si je passe sur une imprimante le résultat est différent que si je l'envoi à PDFCreator par exemple.

    En fait le point en haut à gauche est identique (l'image commence de s'imprimer au même endroit) mais ensuite la marge de droite et d'en bas ne sont pas les mêmes car l'image est plus grande sur l'imprimante que sur le PDF (d'environ 1cm en hauteur et en largeur).

    J'ai contrôler la taille de ma page (e.PageBounds) elle ne varie pas en fonction de l'imprimante. J'ai essayé de changer les marges pour voir sir PDFCreator s'adaptait à la page A4 dans tous les cas mais pas du tout, à chaque modification des marges, le rapport est le même, c'est plus petit d'1cm sur PDFCreator.

    Voici le code pour l'impression :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Try
                Dim g As Graphics = e.Graphics
                'On récupère la page courante comme page à imprimer
                Dim PageNumber As Integer = Form1.panel_scrollNavigator.Controls.GetChildIndex(pagesToPrint(nbSheets))
                'On récupère le control
                Dim ctrl As Page = Form1.panel_scroll.GetPage(PageNumber + 1)
                'Niveau de détail du texte
                g.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAlias
                'On charge l'image en cours
                Dim img As System.Drawing.Bitmap =  = DirectCast(Image.FromFile(Form1.TempPath + "\" + ctrl.Name + ".png"), Bitmap)
     
                'On défini les bordures de la page
                Dim pageBorder As New Rectangle(e.PageBounds.Left, e.PageBounds.Top, e.PageBounds.Width, e.PageBounds.Height)
                'On défini le nouveau ratio de la page pour l'impression des textes
                Form1.Ratio = CSng(System.Math.Sqrt(System.Math.Pow(pageBorder.Height, 2) + System.Math.Pow(pageBorder.Width, 2)) / _
                System.Math.Sqrt(System.Math.Pow(ctrl.Height, 2) + System.Math.Pow(ctrl.Width, 2)))
                'Et on dessine notre image et nos textes sur le graphic actuel
                g.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
                g.DrawImage(img, 0, 0, pageBorder.Width, pageBorder.Height)
                ctrl.PaintMe(g, Form1.PreviewMode.Preview) ' , ratio)
     
                img.Dispose()
                GC.Collect()
     
                If nbSheets = pdi.PrinterSettings.ToPage - 1 Then
                    hasMorePages = False
                    e.HasMorePages = False
                Else
                    nbSheets += 1
                    hasMorePages = True
                    e.HasMorePages = True
                End If
            Catch ex As Exception
                MsgBox(ex.Message)
                hasMorePages = False
            End Try

  2. #2
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut marges images dans pdf creator
    bonjour Miles Raymond
    L'impression est tres optimise sur les logiciels derivant d'adobe et dispose d'une foultitude d'options sous adobe en particulier la mise à l'echelle ce qui permet d'imprimer l'image dans n'importe quelle position.
    Ces options qui -helas- ne sont pas accessibles à l'impression ont priorite sur ce qui est fait dans PrintPage dans le driver d'impression Adobe.
    C'est à l'utilisateur de les configuer au moment d'imprimer.

    En particulier sous Adobe Acrobat Pro voici ce que j'ai:
    -Fit to Printers(ne tient pas compte des marges d'impression)
    -Reduce to Printer Margins( tient compte des marges d'impression
    -Tile Large Page(impression en mosaique pour les grandes pages >page imprimante).
    Il existe egalement un option "scaling" dans les options postscript quand on affiche l'apercu du document sous adobe(configuration->disposition->avance...->graphiques->mise à l"echelle)
    Je pense que le probleme vient de ces options qui ne sont accessibles dans printpage..............
    bon code...........

  3. #3
    Membre confirmé Avatar de Miles Raymond
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 189
    Par défaut
    Merci Mabrouki de ton aide! Mais finalement après avoir pas mal fouillé, le problème venait des HardMargins de l'imprimante. En fait en regardant ma variable e (de type PrintPageEventArgs) si j'allais voir la valeur e.printSettings.PrinteableArea elle changeait en fonction de l'imprimante, vu que les valeurs "e.printSettings.HardMarginX" et "Y" était > 0.

    Donc mon impression commençait toujours à 16 pixels du bord (le hardmargin de mon imprimante de test) mais la taille restait la même, donc les marges de droites et d'en bas devenaient minuscules. PdfCreator de son côté, commençait à la même place, mais ajustait la taille (ce qui n'est pas juste non plus).

    Pour régler mon problème j'ai juste fait un : PrinterSettings.OriginAtMargin qui en fait prends comme point d'origine du début de l'impression non pas les hardMargin de l'imprimante, mais les marges définies par moi, c'est à dire 0 tout partout.

    Et ça fonctionne parfaiement!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD20] Impression différente suivant imprimante ou PDF
    Par stounouslous dans le forum WinDev
    Réponses: 3
    Dernier message: 28/01/2015, 17h00
  2. Réponses: 0
    Dernier message: 27/02/2014, 15h52
  3. Réponses: 2
    Dernier message: 28/07/2011, 15h35
  4. IText : Arial différent entre l'écran et le PDF
    Par bpy1401 dans le forum Documents
    Réponses: 4
    Dernier message: 26/11/2010, 03h13
  5. Réponses: 3
    Dernier message: 08/11/2010, 20h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo