Imprimir con PDFCreator
Publicado por Jesús (29 intervenciones) el 28/08/2012 23:59:29
Hola, buenas noches.
En un boton de un formulario he puesto un código (conseguido desde internet) para imprimir con pdfcreator un informe. Funciona perfectamente quedando el archivo .pdf guardado donde se le indica en el código. Mi pregunta es se puede desde este código con las propiedades de pdfCreator hacer que el archivo quede abierto ya que esta opción está en el menu del programa.
O tendría que añadir código para abrir un archivo?
El código es éste:
Private Sub cmdImprPDF_Click()
Dim pdfjob As PDFCreator.clsPDFCreator
Dim sPDFName As String
Dim sPDFPath As String
Dim sPrinterName As String
Dim sReportName As String
Dim lPrinters As Long
Dim lPrinterCurrent As Long
Dim lPrinterPDF As Long
Dim prtDefault As Printer
'Cambiar el informe y nombre del archivo de salida aquí
sReportName = "InfDaCz"
sPDFName = sReportName & ".pdf"
sPDFPath = Application.CurrentProject.Path & "\"
'Resolver número de índice de impresoras para permitir el cambio y preservar
sPrinterName = Application.Printer.DeviceName
On Error Resume Next
For lPrinters = 0 To Application.Printers.Count
Set Application.Printer = Application.Printers(lPrinters)
Set prtDefault = Application.Printer
Select Case prtDefault.DeviceName
Case Is = sPrinterName
lPrinterCurrent = lPrinters
Case Is = "PDFCreator"
lPrinterPDF = lPrinters
Case Else
'do nothing
End Select
Next lPrinters
On Error GoTo 0
'Cambiar la configuración de la impresora predeterminada
Set Application.Printer = Application.Printers(lPrinterPDF)
Set prtDefault = Application.Printer
'Start PFF Creator
Set pdfjob = New PDFCreator.clsPDFCreator
With pdfjob
If .cStart("/NoProcessingAtStartup") = False Then
MsgBox "Can't initialize PDFCreator.", vbCritical + _
vbOKOnly, "PrtPDFCreator"
Exit Sub
End If
.cOption("UseAutosave") = 1
.cOption("UseAutosaveDirectory") = 1
.cOption("AutosaveDirectory") = sPDFPath
.cOption("AutosaveFilename") = sPDFName
.cOption("AutosaveFormat") = 0 ' 0 = PDF
.cClearCache
' yo creo que habría que añadir aqui alguna propiedad pero no consigo encontrarla
End With
'Imprimir el documento en PDF
DoCmd.OpenReport sReportName
'Esperar hasta que el trabajo de impresión ha entrado en la cola de impresión
Do Until pdfjob.cCountOfPrintjobs = 1
DoEvents
Loop
pdfjob.cPrinterStop = False
'Espere hasta que PDF Creator es terminado, a continuación, suelte los objetos
Do Until pdfjob.cCountOfPrintjobs = 0
DoEvents
Loop
pdfjob.cClose
'Restablecer la (original) impresora predeterminada y liberación PDF Creator
Set Application.Printer = Application.Printers(lPrinterCurrent)
Set pdfjob = Nothing
End Sub
De antemano muchas gracias por vuestro interes
En un boton de un formulario he puesto un código (conseguido desde internet) para imprimir con pdfcreator un informe. Funciona perfectamente quedando el archivo .pdf guardado donde se le indica en el código. Mi pregunta es se puede desde este código con las propiedades de pdfCreator hacer que el archivo quede abierto ya que esta opción está en el menu del programa.
O tendría que añadir código para abrir un archivo?
El código es éste:
Private Sub cmdImprPDF_Click()
Dim pdfjob As PDFCreator.clsPDFCreator
Dim sPDFName As String
Dim sPDFPath As String
Dim sPrinterName As String
Dim sReportName As String
Dim lPrinters As Long
Dim lPrinterCurrent As Long
Dim lPrinterPDF As Long
Dim prtDefault As Printer
'Cambiar el informe y nombre del archivo de salida aquí
sReportName = "InfDaCz"
sPDFName = sReportName & ".pdf"
sPDFPath = Application.CurrentProject.Path & "\"
'Resolver número de índice de impresoras para permitir el cambio y preservar
sPrinterName = Application.Printer.DeviceName
On Error Resume Next
For lPrinters = 0 To Application.Printers.Count
Set Application.Printer = Application.Printers(lPrinters)
Set prtDefault = Application.Printer
Select Case prtDefault.DeviceName
Case Is = sPrinterName
lPrinterCurrent = lPrinters
Case Is = "PDFCreator"
lPrinterPDF = lPrinters
Case Else
'do nothing
End Select
Next lPrinters
On Error GoTo 0
'Cambiar la configuración de la impresora predeterminada
Set Application.Printer = Application.Printers(lPrinterPDF)
Set prtDefault = Application.Printer
'Start PFF Creator
Set pdfjob = New PDFCreator.clsPDFCreator
With pdfjob
If .cStart("/NoProcessingAtStartup") = False Then
MsgBox "Can't initialize PDFCreator.", vbCritical + _
vbOKOnly, "PrtPDFCreator"
Exit Sub
End If
.cOption("UseAutosave") = 1
.cOption("UseAutosaveDirectory") = 1
.cOption("AutosaveDirectory") = sPDFPath
.cOption("AutosaveFilename") = sPDFName
.cOption("AutosaveFormat") = 0 ' 0 = PDF
.cClearCache

End With
'Imprimir el documento en PDF
DoCmd.OpenReport sReportName
'Esperar hasta que el trabajo de impresión ha entrado en la cola de impresión
Do Until pdfjob.cCountOfPrintjobs = 1
DoEvents
Loop
pdfjob.cPrinterStop = False
'Espere hasta que PDF Creator es terminado, a continuación, suelte los objetos
Do Until pdfjob.cCountOfPrintjobs = 0
DoEvents
Loop
pdfjob.cClose
'Restablecer la (original) impresora predeterminada y liberación PDF Creator
Set Application.Printer = Application.Printers(lPrinterCurrent)
Set pdfjob = Nothing
End Sub
De antemano muchas gracias por vuestro interes
Valora esta pregunta


0