Bonjour à tous,
j'ai un problème pour paramétrer mes impressions sur certaines imprimantes.
je vous explique, sur mon application, il est possible dans une interface de prédéfinir des paramètres pour des impressions (étant donné que l'application en fait un grand nombre):
et de l'autre coté, quand on décide d'imprimé un état, j'affecte le paramètrage automatiquement.
mon problème est que sur certaines imprimantes, le document ne veut pas sortir sur le bac2, il sort sur le bac3 ou même pas du tout.
si vous avez une petite idée.
grosso modo j'enregistre comme sa:
Code :
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 37 38 39 40 41 42 43 44 45 46 47 48 49
|
IF PDialog.ShowDialog = DialogResult.OK Then
Me.BusParam.Imprimante = PDocument.DefaultPageSettings.PrinterSettings.PrinterName
Dim psDlg AS New PageSetupDialog
Dim LePageSettings AS New System.Drawing.Printing.PageSettings
LePageSettings.PrinterSettings = PDocument.DefaultPageSettings.PrinterSettings
LePageSettings.Landscape = PDocument.DefaultPageSettings.Landscape
LePageSettings.PaperSize = PDocument.DefaultPageSettings.PaperSize
LePageSettings.PaperSource = PDocument.DefaultPageSettings.PaperSource
IF NOT Bus_Base.IsMinValue(Me.BusParam.Marge_H) Then
LePageSettings.Margins.Top = Me.BusParam.Marge_H * 10
Else
LePageSettings.Margins.Top = 0
End IF
IF NOT Bus_Base.IsMinValue(Me.BusParam.Marge_B) Then
LePageSettings.Margins.Bottom = Me.BusParam.Marge_B * 10
Else
LePageSettings.Margins.Bottom = 0
End IF
IF NOT Bus_Base.IsMinValue(Me.BusParam.Marge_D) Then
LePageSettings.Margins.RIGHT = Me.BusParam.Marge_D * 10
Else
LePageSettings.Margins.RIGHT = 0
End IF
IF NOT Bus_Base.IsMinValue(Me.BusParam.Marge_G) Then
LePageSettings.Margins.LEFT = Me.BusParam.Marge_G * 10
Else
LePageSettings.Margins.LEFT = 0
End IF
psDlg.PageSettings = LePageSettings
IF psDlg.ShowDialog = DialogResult.OK Then
IF System.Globalization.RegionInfo.CurrentRegion.IsMetric Then
LePageSettings.Margins = System.Drawing.Printing.PrinterUnitConvert.Convert(LePageSettings.Margins, System.Drawing.Printing.PrinterUnit.Display, System.Drawing.Printing.PrinterUnit.TenthsOfAMillimeter)
End IF
Me.BusParam.Source = LePageSettings.PaperSource.SourceName
Me.BusParam.Taille = LePageSettings.PaperSize.PaperName
Me.BusParam.Portrait = NOT LePageSettings.Landscape
Me.BusParam.Marge_H = OutilsIHM.FormatPxModeArondi(LePageSettings.Margins.Top / 10, 2)
Me.BusParam.Marge_B = OutilsIHM.FormatPxModeArondi(LePageSettings.Margins.Bottom / 10, 2)
Me.BusParam.Marge_D = OutilsIHM.FormatPxModeArondi(LePageSettings.Margins.RIGHT / 10, 2)
Me.BusParam.Marge_G = OutilsIHM.FormatPxModeArondi(LePageSettings.Margins.LEFT / 10, 2)
Else
Me.BusParam.Source = PDocument.DefaultPageSettings.PaperSource.SourceName
Me.BusParam.Taille = PDocument.DefaultPageSettings.PaperSize.PaperName
Me.BusParam.Portrait = NOT PDocument.DefaultPageSettings.Landscape
End IF
End IF |
et je réafecte comme sa :
Code :
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
|
pd.DefaultPageSettings.PrinterSettings.PrinterName = BusParam.Imprimante
rpt_Doc.PrintOptions.PrinterName = pd.DefaultPageSettings.PrinterSettings.PrinterName
Dim PaperSource AS System.Drawing.Printing.PaperSource
FOR Each Source AS System.Drawing.Printing.PaperSource IN pd.PrinterSettings.PaperSources
IF Source.SourceName = BusParam.Source Then
PaperSource = Source
End IF
Next
IF NOT PaperSource IS Nothing Then
rpt_Doc.PrintOptions.PaperSource = PaperSource.Kind
End IF
IF BusParam.Portrait Then
rpt_Doc.PrintOptions.PaperOrientation = PaperOrientation.Portrait
Else
rpt_Doc.PrintOptions.PaperOrientation = PaperOrientation.Landscape
End IF
Dim PaperSize AS System.Drawing.Printing.PaperSize
FOR Each Size AS System.Drawing.Printing.PaperSize IN pd.PrinterSettings.PaperSizes
IF Size.PaperName = BusParam.Taille Then
PaperSize = Size
End IF
Next
rpt_Doc.PrintOptions.PaperSize = PaperSize.Kind
rpt_Doc.PrintToPrinter(1, False, 0, 0) |
il doit y avoir une erreur quelque part, peut être a cause d'une histoire d'imprimante par défaut, je sais pas trop ...
Merci.