FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Problemas con TAcroPdf en Tiempo de ejecucuón
Buenas, tengo un problemilla, me creo un componente del tipo TAcroPDF (Acrobat reader 7) e intento imprimirlo, la razón de hacerlo en tiempo de ejecución es que el usuario elige un documento de un servidor y directamente lo imprime sin abrirlo ni nada, pudiendo elegir entre archivos de tipo word, excel, pdf y powerpoint, este es el código que uso para la creación de PDF:
Código:
procedure TPrint.PdfPrint(Filename: string); var Nombre : OleVariant; PdfDoc : TAcroPdf; begin PdfDoc := TAcroPdf.Create(self); Nombre := Filename; PdfDoc.LoadFile(Nombre); PdfDoc.printWithDialog; end; ¿Hay alguna manera de poder imprimir el documento que se le pase sin abrir el Acrobat y haciendolo desde tiempo de ejecución? Gracias de antemano. |
#2
|
||||
|
||||
Hola compañeros de Delphi, tengo exactamente este mismo problema, no soy capaz de imprimir un pdf con el componente de acrobat (TAcroPdf).
He utilizado Print, PrintAll, ... todo, vaya, y ésto no imprime. He comprobado que si meto el componente en un Form, el "Print" funciona correctamente. Iba a tirar por el camino, un tanto chapucero, siguiente: Como quién se encarga de imprimir es un objeto instanciado(instado según el DRAE) de una clase declarada por mí, iba a ponerle una propiedad del tipo TAcroPdf, y asignarla antes de llamar al procedimiento que se encarga de imprimir. Pues nada, no me imprime tampoco. Tengo el "Rad Studio X2 Delphi" y el adobe acrobat 10.0. El código sería más o menos esto:
Evidentemente, he tenido que quitar código, política de empresa, pero a groso modo esto es lo que hago.
__________________
La Madurez se llama... ~~~Gaia~~~ Última edición por ozsWizzard fecha: 13-07-2012 a las 10:42:41. |
#3
|
||||
|
||||
También me vale la opción de que con el ShellExecuteEx pueda imprimir sin abrir el acrobat (que ya sé que no se puede) pero no me vale terminar el proceso yo mismo porque no puedo asegurarme de que lo haya imprimido.
Y me da exactamente igual usar el TAcroPdf en tiempo de diseño que en tiempo de ejecución, lo que me gustaría es mantener la funcionalidad dentro de "MiClase" y no tener que llevármela al Form.
__________________
La Madurez se llama... ~~~Gaia~~~ |
#4
|
||||
|
||||
Acabo de descubrir con asombro que, hasta que no acaba el hilo del proceso entero, no carga el pdf.
Es decir, incluso en un formulario, si hago el LoadFile y el Print seguidos, no funciona. y da igual que lo meta en procedientos distintos, que ponga Sleeps de los segundos que quiera, Application.ProcessMessages, etc. Da excatamente igual, no imprime (porque realmente no ha cargado el pdf). En caso contrario, si pongo en un evento onclick de un botón el "LoadFile" y en el evento onclick de otro botón el "Print", funciona correctamente. Mi problema está en que lo que realmente quería hacer es una iteración donde se reccorre un dataset con el nombre de cada fichero y quiero imprimir los que tenga marcados (da igual el método). Con esta premisa, es imposible hacer lo que quiero hacer. Total, que si alguien sabe alguna forma de imprimir pdf directamente en la impresora y que se pueda hacer de forma seguida (indicar fichero e imprimir)... que me lo haga saber. Había pensado en poner en hilos distintos el loadFile y el print, pero eso debe de ser una locura.
__________________
La Madurez se llama... ~~~Gaia~~~ |
#5
|
||||
|
||||
Para que se vea a qué me refiero, estas son las pruebas que he hecho.
Con este código, cuando pulso Button1, no imprime nada, cuando pulso Button2 después de haber pulsado Button1, imprime. Lo que me ha hecho gracia, y por si a alguien le puede servir para hallar una solución es que, cuando se pulsa Button1 (sin que haya un pdf cargado) hasta los 7 segundos (los 6 del Sleep y algo más), no se ve el pdf en el TAcroPdf. Utilizo PrintAll porque Print abre un dialogo de impresión, aunque las pruebas las hago con print porque es más rápido ver que abre el dialogo que ir a la impresora (en la otra punta de la oficina) a ver si ha imprimido algo.
Saludos.
__________________
La Madurez se llama... ~~~Gaia~~~ |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
problemas en tiempo de ejecución | Nelly | Varios | 4 | 05-04-2006 19:25:53 |
Problemas al tratar de crear varios componentes en tiempo de ejecucion | ilichhernandez | Conexión con bases de datos | 2 | 13-11-2005 19:03:26 |
Problemas con datos del tiempo | soto | Varios | 2 | 27-10-2005 01:18:27 |
Cuestión de tiempo | elloco | Varios | 3 | 23-02-2004 20:09:58 |
Tiempo Muerto | etrevino | Varios | 0 | 11-11-2003 16:18:10 |
|