Access - Imprimir con PDFCreator

 
Vista:

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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Imprimir con PDFCreator

Publicado por Neckkito (1157 intervenciones) el 29/08/2012 12:16:53
Hola!
He estado buscando por la ayuda del PdfCreator y por la Red y, lamentablemente, no he podido encontrar una solución a lo que pides a través del propio PDFCreator.
Existe una opción, que se llama "OpenOutputFile", que por intuición debería funcionar, pero he sido incapaz de lograr que funcione. Su definición iría en:
...
.cOption("UseAutosave") = 1
.cOption("UseAutosaveDirectory") = 1
.cOption("AutosaveDirectory") = sPDFPath
.cOption("AutosaveFilename") = sPDFName
.cOption("AutosaveFormat") = 0 ' 0 = PDF
.cOption("OpenOutputFile") = 1
.cClearCache
...

Desconozco si no funciona porque estás operando a través de VB, y no directamente desde el menú imprimir del propio PDF creator, o si no funciona por otro motivo. Quizá alguien con más conocimientos sobre este tema particular pueda ilustrarnos

Para abrir el archivo que acabas de imprimir puedes utilizar la función ShellExecute. Te explico cómo se haría:

En el módulo de formulario (el módulo donde tienes el código para tu botón cmdImprPDF) arriba, al principio (debajo de las líneas Option Compare Database y Option Explicit -si sólo te sale la primera no pasa nada-) escribes la función, que es:

...
Private Declare Function ShellExecute Lib "shell32.dll" Alias _
"ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
...

Y en tu código de botón añades estas líneas (te copio parte de tu código para que las ubiques)

La primera:
...
Dim sPDFPath As String
Dim sRutaPdf As String
Dim sPrinterName As String
...

Y la segunda:
...
sRutaPdf = sPDFPath & sPDFName
Call ShellExecute(Me.hwnd, "Open", sRutaPdf, "", "", 1)

End Sub
...

Y con esto, teóricamente, debería abrirse el pdf creado.

Ya comentarás qué tal.

Un saludo,

Neckkito
... http://neckkito.eu5.org ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Imprimir con PDFCreator

Publicado por Jesus (29 intervenciones) el 29/08/2012 12:58:15
Muchas gracias neckkito (por cierto no es la primera vez que nos vemos por aquí y me solucionas el lio).
Creo que yo también habia puesto esa propiedad "OpenOutputFile" pero, sinceramente sin saber lo que estaba haciendo, haciendo pruebas por probar.
La solución que me has dado (como casi todas las tuyas) va de maravilla.

Ah y lo digo públicamente tu curso de VB, DE MARAVILLA, por fin he conseguido entender el código aunque todavia me cuesta escribirlo, pero bueno poquito a poco.

GRACIAS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Imprimir con PDFCreator

Publicado por Neckkito (1157 intervenciones) el 29/08/2012 17:19:03
Gracias por tus palabras. Te debo un

Bromas aparte, de verdad que muchas gracias por tus comentarios .

Un gran saludo,

Neckkito
... http://neckkito.eu5.org ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Imprimir con PDFCreator

Publicado por Jorge (2 intervenciones) el 04/10/2012 02:08:14
Que tal.. he leido con interes las notas referentes a la impresion con PDFCreator desde Vb.Net. Yo actualmente uso el VS2008 y he integrado el COM PDFCreator al proyecto. En la parte de codigo que dice: Dim pdfjob As PDFCreator.clsPDFCreator no me aparece la clsPDFCreator. Como se debe integrar PDFCreator al proyecto? es decir, lo hago con las propiedades del proyectos, después agrego la referencia COM PDFCreator.

Por su ayuda, muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Imprimir con PDFCreator

Publicado por Neckkito (1157 intervenciones) el 04/10/2012 07:55:05
Hola!
Yo no trabajo con el VBStudio, por lo que no puedo decirte cómo se hace. Sí te puedo decir que para que funcione en Access lo que debes hacer es:
- Bajarte e instalarte el PDF creator
- La instalación del PDFCreator te crea la librería correspondiente al PDF creator.
- Cuando, en Access, necesitas utilizar esa librería, tienes que registrarla
- Para registrarla, en el VBE, tienes que irte a Herramientar -> Referencias... e incorporar la referencia al proyecto marcando su check.

A partir de ahí Access ya "sabe" que existe esa librería, por lo que ya te permite operar con sus propiedades y métodos.

A ciegas te diría que "parece" que necesitas indicarle a tu proyecto que vas a utilizar la referencia "PDFCreator" (hablo de memoria, y quizá el nombre de la biblioteca pueda variar ligeramente).

Si no alguien que sí utilize el VBStudio tendrá que echarnos una mano

Un saludo,

Neckkito
http://neckkito.siliconproject.com.ar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Imprimir con PDFCreator

Publicado por Jorge (2 intervenciones) el 04/10/2012 17:04:23
Neckkito gracias por tu respuesta. Me ha ayudado bastante ya que como dices, faltaba indicarle a mi programa la referencia a PDFCreator, es decir, le faltaba la línea "Imports PDFCreator". Te agradezco mucho y un abrazo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Imprimir con PDFCreator

Publicado por KristianC10 (1 intervención) el 26/11/2015 16:57:11
Amigo una ayuda instale pdfcreator pero no encuentro esta referencia Dim pdfjob As PDFCreator.clsPDFCreator me puedes ayudar como la descargo o como hacer la referencia a mi solo me sale PDFCreator.tlb.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Imprimir con PDFCreator

Publicado por Ruben Acosta (1 intervención) el 20/11/2012 21:00:43
Saludos
Estoy aplicando su codigo para la impresion a traves de pdfcreator pero tengo una duda: hay una lines donde al parecer invocas un objeto con su propiedad : DoCmd.OpenReport sReportName

Que es DoCmd?????

Gracias por su ayuda

RD
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Imprimir con PDFCreator

Publicado por Neckkito (1157 intervenciones) el 20/11/2012 22:27:19
Hola!

DoCmd es un objeto de VB para Access. A través de DoCmd (Do Command) puedes realizar un gran número de acciones. En definitiva, y valga la reiteración, es un objeto especial para poder programar en VB con Access.

Por si no lo sabes, tenemos VB en general, que podemos utilizar, por ejemplo, con Visual Studio, y después tenemos VB para aplicaciones, que es el código VB especializado para los programas de la Suite Office (y también para Autocad). Y cada aplicación de Office tiene sus "palabras especiales" para programar en VB.

Por ejemplo, en Access no podrías emplear (salvo cuando utilizas automatización) palabras como WorkSheets, Range... que son palabras reservadas para Excel. Al revés, en Excel (y, repito, salvo automatización), no podrías utilizar DoCmd.

Espero haberte clarificado un poco las ideas.

Un saludo,

Neckkito
http://neckkito.siliconproject.com.ar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar