OVH Cloud OVH Cloud

Print PDF et Impression terminé

1 réponse
Avatar
Marc Sylvain
J'imprime des plans 3d a partir d'un viewer maison

vers une imprimante Adobe (PDF) -Acrobat 6.0 standard



Existe-il une façon de vérifier si le document est

terminé d'imprimer (car j'imprime une serie de plan)



Je veux faire une boucle temps que le

fichier n'ai pas complètement construit.



Voici un bout de code si cela peux vous aider



Merci

Marc



For Each X In Printers

If X.DeviceName = "Adobe PDF" Then

PrinterName = "Adobe PDF"

Set Old_Printer = Printer

Set Printer = X

Exit For

End If

Next



Call SEDraftX1.ActiveSheet.CopyEMFToClipboard(AspectRatio, BnWPrint)

sts = Clipboard.GetFormat(vbCFEMetafile)

If (sts = True) Then

Set PicObj = Clipboard.GetData(vbCFEMetafile)

PrintDrawing PicObj, Printer, SEDraftX1.ActiveSheet.Name, AspectRatio,
"11"

End If







Sub PrintDrawing(PicObj As Picture, Device As Printer, Name As String,
AspectRatio As Double, Format_Dessin As String)



Dim LeftMargin As Single

Dim TopMargin As Single

Dim PaperWidth As Single

Dim PaperHeight As Single

Dim PicWidth As Single

Dim PicHeight As Single

Dim PaperRatio As Double

Dim PicRatio As Double

Dim OldFontSize As Integer





SEDraftX1.SetFocus

LeftMargin = 100 '1400

TopMargin = 50

PaperWidth = Device.Width - LeftMargin * 6

PaperHeight = Device.Height - TopMargin * 2

PaperRatio = Device.Width / Device.Height

PicRatio = AspectRatio

If (PaperRatio >= PicRatio) Then

PaperWidth = PaperHeight * PicRatio

Else

PaperHeight = PaperWidth / PicRatio

End If

PicWidth = 567 * (PicObj.Width / 1000)

PicHeight = 567 * (PicObj.Height / 1000)

Device.PrintQuality = 1

Device.PaintPicture PicObj, LeftMargin, TopMargin, PaperWidth, PaperHeight,
50, 50, PicWidth, PicHeight



OldFontSize = Device.FontSize

Device.FontSize = 8

Device.CurrentX = LeftMargin + (PaperWidth - TextWidth(Name)) / 2

Device.CurrentY = TopMargin + PaperHeight + TextHeight(Name) / 2

Device.CurrentX = PaperWidth - 8600

Device.CurrentY = PaperHeight - 1000

Device.Print Numero_contrat1

Device.CurrentX = PaperWidth - 9800

Device.CurrentY = PaperHeight - 1000

Device.Print Numero_modele1

Device.FontSize = OldFontSize

Device.EndDoc

Set Device = Nothing

1 réponse

Avatar
Le pape
Bonsoir,

A ta place, j'essaierais d'utiliser PDFCreator ou un autre générateur de
PDF programmable. Pour avoir utilisé PDFCreator, je peux te dire que
l'objet COM mis à disposition dispose d'un event pour déterminer la fin
d'impression. Voir http://www.sourceforge.net/projects/pdfcreator

Philippe

Marc Sylvain a écrit :
J'imprime des plans 3d a partir d'un viewer maison

vers une imprimante Adobe (PDF) -Acrobat 6.0 standard



Existe-il une façon de vérifier si le document est

terminé d'imprimer (car j'imprime une serie de plan)



Je veux faire une boucle temps que le

fichier n'ai pas complètement construit.



Voici un bout de code si cela peux vous aider



Merci

Marc



For Each X In Printers

If X.DeviceName = "Adobe PDF" Then

PrinterName = "Adobe PDF"

Set Old_Printer = Printer

Set Printer = X

Exit For

End If

Next



Call SEDraftX1.ActiveSheet.CopyEMFToClipboard(AspectRatio, BnWPrint)

sts = Clipboard.GetFormat(vbCFEMetafile)

If (sts = True) Then

Set PicObj = Clipboard.GetData(vbCFEMetafile)

PrintDrawing PicObj, Printer, SEDraftX1.ActiveSheet.Name, AspectRatio,
"11"

End If







Sub PrintDrawing(PicObj As Picture, Device As Printer, Name As String,
AspectRatio As Double, Format_Dessin As String)



Dim LeftMargin As Single

Dim TopMargin As Single

Dim PaperWidth As Single

Dim PaperHeight As Single

Dim PicWidth As Single

Dim PicHeight As Single

Dim PaperRatio As Double

Dim PicRatio As Double

Dim OldFontSize As Integer





SEDraftX1.SetFocus

LeftMargin = 100 '1400

TopMargin = 50

PaperWidth = Device.Width - LeftMargin * 6

PaperHeight = Device.Height - TopMargin * 2

PaperRatio = Device.Width / Device.Height

PicRatio = AspectRatio

If (PaperRatio >= PicRatio) Then

PaperWidth = PaperHeight * PicRatio

Else

PaperHeight = PaperWidth / PicRatio

End If

PicWidth = 567 * (PicObj.Width / 1000)

PicHeight = 567 * (PicObj.Height / 1000)

Device.PrintQuality = 1

Device.PaintPicture PicObj, LeftMargin, TopMargin, PaperWidth, PaperHeight,
50, 50, PicWidth, PicHeight



OldFontSize = Device.FontSize

Device.FontSize = 8

Device.CurrentX = LeftMargin + (PaperWidth - TextWidth(Name)) / 2

Device.CurrentY = TopMargin + PaperHeight + TextHeight(Name) / 2

Device.CurrentX = PaperWidth - 8600

Device.CurrentY = PaperHeight - 1000

Device.Print Numero_contrat1

Device.CurrentX = PaperWidth - 9800

Device.CurrentY = PaperHeight - 1000

Device.Print Numero_modele1

Device.FontSize = OldFontSize

Device.EndDoc

Set Device = Nothing