Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-03-2012
Avatar de Cabanyaler
Cabanyaler Cabanyaler is offline
Miembro
 
Registrado: jun 2003
Ubicación: País Valencià
Posts: 339
Poder: 21
Cabanyaler Va por buen camino
Unhappy Crear Pdf con pulsar un botón

He seguido (creo) todos y cada uno de los hilos relacionados en el foro con el tema de creación de archivos pdf de manera transparente al usuario.
Veo que algunos son del 2004 y de esa antigüedad.
La verdad es que he visto el PDFCreator, pero este trabaja desde un fichero precreado que crea despues el pdf y desde una llamada tipo prompt.
He leido también que existen componentes de pago, pero no es ese el caso.
He probado también con la configuración de Adobe Acrobat 9 Standard, consiguiendo imprimir a un directorio por defecto siempre, con una sóla ventana de muestra del progreso, pero no acierto a darle nombre al fichero pdf que me crea y me lo guarda con el nombre ".pdf", además de dejarme una ventana molestamente abierta con una barra de progreso que nunca acaba de completarse a pesar de que la operación termina.

¿Alguien me puede ayudar y decirme como puedo imprimir a pdf dándole nombre al fichero y ruta de destino desde programa de manera que el usuario pulse un botón, vea una barra de progreso y punto?.
Un ejemplo, una configuración, un componente gratis milagroso, algo.
En fin, gracias por vuestra ayuda.
__________________
El meu país és tan petit, que des de dalt d'un campanar es pot veure el campanar veí.
Responder Con Cita
  #2  
Antiguo 01-03-2012
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Hola, no se con que trabajas, con rave report se puede hacer lo que pretendes, es gratis, te deja introducir la ruta, el nombre y todo lo que pides, no se si te trastoca mucho los planes, ya me contarás.

Saludos.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
  #3  
Antiguo 01-03-2012
Avatar de Cabanyaler
Cabanyaler Cabanyaler is offline
Miembro
 
Registrado: jun 2003
Ubicación: País Valencià
Posts: 339
Poder: 21
Cabanyaler Va por buen camino
Cita:
Empezado por ElDioni Ver Mensaje
Hola, no se con que trabajas, con rave report se puede hacer lo que pretendes, es gratis, te deja introducir la ruta, el nombre y todo lo que pides, no se si te trastoca mucho los planes, ya me contarás.

Saludos.
Si gracias Dioni, trabajo y lo tengo todo hecho con QReport.
Pero lo hago a escapre y sobre marmol si es así como se puede hacer.
¿Lo debo pasar a Rave Report? ¿Que se instala en las palateas de los componetes de Delphi?.
Gracias.
__________________
El meu país és tan petit, que des de dalt d'un campanar es pot veure el campanar veí.
Responder Con Cita
  #4  
Antiguo 01-03-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Se puede usar PDFCreator que lo que hace es hacer una impresora virtual.
Una vez que la instalas tienes dos opciones:
1- Antes de imprimir el reporte buscar esta impresora (en el previw) e imprimir.
2- Hacer que el programa busque la impresora, imprima y coloque la que tenia otra vez.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #5  
Antiguo 01-03-2012
Avatar de Cabanyaler
Cabanyaler Cabanyaler is offline
Miembro
 
Registrado: jun 2003
Ubicación: País Valencià
Posts: 339
Poder: 21
Cabanyaler Va por buen camino
Cita:
Empezado por Caral Ver Mensaje
Hola
Se puede usar PDFCreator que lo que hace es hacer una impresora virtual.
Una vez que la instalas tienes dos opciones:
1- Antes de imprimir el reporte buscar esta impresora (en el previw) e imprimir.
2- Hacer que el programa busque la impresora, imprima y coloque la que tenia otra vez.
Saludos
Si pero tengo entendido que es a partir de un fichero ya creado en cualquier formato como por ejemplo .doc, .xls., ..... y yo no tengo aún el fichero si no que es el reporte del QuickReport.

Ahora ya me marcho a mi casa a jugar con mi niño que no lo he visto desde las 8:00 AM, mañana seguiré perdiendo el tiempo trabajando.
Iré por la línea de investigación del Rave Report que me indicó el compañero Dioni, a ver que saco. Con lo que tenga lo publico como siempre.
__________________
El meu país és tan petit, que des de dalt d'un campanar es pot veure el campanar veí.
Responder Con Cita
  #6  
Antiguo 01-03-2012
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Imprime directamente del QReport.
Aqui esta el link del PDFCreator, instalalo y lo veras, es muy sencillo.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #7  
Antiguo 05-03-2012
Avatar de Cabanyaler
Cabanyaler Cabanyaler is offline
Miembro
 
Registrado: jun 2003
Ubicación: País Valencià
Posts: 339
Poder: 21
Cabanyaler Va por buen camino
Uff, bueno estoy con esto y no me crea los pdf en el directorio que deseo.
Creo que el fallo estriba en mi desconocimiento alrededor de los comando del OLEObjeto creado para el PDFCreator.

¿Me podrías, quien controle, revisar a ver si me olvido de algo?.
Gracias.

Código Delphi [-]
procedure TFPrincipal.BitBtnPDFClick(Sender: TObject);
var
    Index: Integer;
    NombreImpresora   : string;
    NombrePDF : string;
begin
    // Pille l'impresora
    NombreImpresora   :=  'PDFCreator';
    Index := Printer.Printers.IndexOf(NombreImpresora);
    Printer.PrinterIndex := Index;
    //

    NombrePDF       := 'L:\JOSE\temp\'+ Cod_Cen_w + '_' + EditNumPedido.Text + '.pdf';
    PDFCreator := CreateOLEOBject('PDFCreator.clsPDFCreator');
    PDFCreator.cStart('/NoProcessingAtStartup');               
    StorePDFOptions();                                         
    SetPDFOptions(NombrePDF);            

    // ****
    // Imprimeix del QuickReport, obvio esta parte del código referente sólo al QuickReport
    . . . . 
    . . . . 
    // ****        
   
    RestorePDFOptions;                     // Restableisc els anteriors valors per a les opcions
    VarClear(PDFCreator);                  // Netetje la memoria del objecte PDFCreator
end;


procedure TFPrincipal.SetPDFOptions(const filename: String);
begin
   PDFCreator.cOption('UseAutosave')          := 1;
   PDFCreator.cOption('UseAutosaveDirectory') := 1;
   PDFCreator.cOption('AutosaveDirectory')    := ExtractFilePath(filename);
   PDFCreator.cOption('AutosaveFilename')     := ExtractFileName(filename);
   PDFCreator.cOption('AutosaveFormat')       := 0; // PDF format
   PDFCreator.cOption('PDFColorsColorModel')  := 0; // RGB format
   PDFCreator.cSaveOptions;
end;


procedure TFPrincipal.StorePDFOptions;
begin
   optUseAutosave :=                     PDFCreator.cOption['UseAutosave'];
   optUseAutosaveDirectory :=            PDFCreator.cOption['UseAutosaveDirectory'];
   optAutosaveDirectory :=               PDFCreator.cOption['AutosaveDirectory'];
   optAutosaveFilename :=                PDFCreator.cOption['AutosaveFilename'];
   optAutosaveFormat :=                  PDFCreator.cOption['AutosaveFormat'];
   optPDFColorsColorModel :=             PDFCreator.cOption['PDFColorsColorModel'];
end;


procedure TFPrincipal.RestorePDFOptions;
begin
   PDFCreator.cOption('UseAutosave')            := optUseAutosave;
   PDFCreator.cOption('UseAutosaveDirectory')   := optUseAutosaveDirectory;
   PDFCreator.cOption('AutosaveDirectory')      := optAutosaveDirectory;
   PDFCreator.cOption('AutosaveFilename')       := optAutosaveFilename;
   PDFCreator.cOption('AutosaveFormat')         := optAutosaveFormat;
   PDFCreator.cOption('PDFColorsColorModel')    := optPDFColorsColorModel;
   PDFCreator.cSaveOptions;
end;

Gracias.
__________________
El meu país és tan petit, que des de dalt d'un campanar es pot veure el campanar veí.
Responder Con Cita
  #8  
Antiguo 05-03-2012
Avatar de Cabanyaler
Cabanyaler Cabanyaler is offline
Miembro
 
Registrado: jun 2003
Ubicación: País Valencià
Posts: 339
Poder: 21
Cabanyaler Va por buen camino
Estoy encontrando código, aunque en VB, que trata este mismo tema y veo que intercalan líneas de código en algunos puntos que hacen sleep al sistema.
¿Será que debo esperar un determinado tiempo antes de hacer algo y después de hacer algún paso?.
Por ejemplo encuentro que después de limpiar caches, capturar impresora,.....
Lo he probado, pero aún así no me imprime, ni crea pdf alguno.
Si me funciona si establezco los controles desde las opciones de menú del PDFCreator (aunque no le puedo dar el nombre de fichero deseado, ya que me pone la fecha como nombre con un formato de yyyymmddhhmmss.pdf), pero establecerlas desde código, sigo igual de atascado.
__________________
El meu país és tan petit, que des de dalt d'un campanar es pot veure el campanar veí.
Responder Con Cita
  #9  
Antiguo 05-03-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
A mi tu código me funciona bien si quito la línea:

Código Delphi [-]
PDFCreator.cStart('/NoProcessingAtStartup');

que, según la documentación, lo que hace es precisamente impedir que se procesen los documentos:

Cita:
No processing at startup: When you use this setting, PDFCreator will start without processing any documents. You can manually start processing by going to the Document menu and selecting Print or by unchecking the Printer Stop option in the Printer menu. The setting is useful if you want collect some files first, then combine the files into one and create a pdf.
En caso de que esa línea esté presente, entonces puedes iniciar la impresión con

Código Delphi [-]
PdfCreator.cPrinterStop := false;

// Saludos
Responder Con Cita
  #10  
Antiguo 06-03-2012
Avatar de Cabanyaler
Cabanyaler Cabanyaler is offline
Miembro
 
Registrado: jun 2003
Ubicación: País Valencià
Posts: 339
Poder: 21
Cabanyaler Va por buen camino
Red face

Cita:
Empezado por roman Ver Mensaje
A mi tu código me funciona bien si quito la línea:

Código Delphi [-]
PDFCreator.cStart('/NoProcessingAtStartup');

que, según la documentación, lo que hace es precisamente impedir que se procesen los documentos:



En caso de que esa línea esté presente, entonces puedes iniciar la impresión con

Código Delphi [-]
PdfCreator.cPrinterStop := false;

// Saludos
Ufff, hola he estado de viaje todo el día, pero mañana es lo primero que hago al llegar al despacho. A ver si va a ser eso de no acabar de entender el inglés del todo.....
Gracias Roman.
__________________
El meu país és tan petit, que des de dalt d'un campanar es pot veure el campanar veí.
Responder Con Cita
  #11  
Antiguo 07-03-2012
Avatar de Cabanyaler
Cabanyaler Cabanyaler is offline
Miembro
 
Registrado: jun 2003
Ubicación: País Valencià
Posts: 339
Poder: 21
Cabanyaler Va por buen camino
Desgraciadamente no lo había entendido mal.
Lo que proporciona la ejecución de la instrucción:
Código Delphi [-]
PDFCreator.cStart('/NoProcessingAtStartup');
es la NO ejecución del PDFCreator mostrando la ventana para la introducción de datos del propio programa, lo cual es lo que intentamos evitar.
Intentamos o intento precisamente hacer esa configuración desde código sin mostrar ventana alguna.
Aún así gracias Roman.
__________________
El meu país és tan petit, que des de dalt d'un campanar es pot veure el campanar veí.

Última edición por Cabanyaler fecha: 07-03-2012 a las 09:47:28.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Al pulsar Enter en un boton funciona como Tabulador weke OOP 8 12-09-2011 19:04:01
Pulsar un Botón de una página web. imossa Internet 4 04-05-2007 10:21:01
Capturar teclado o pulsar botón mientas se recorre un bucle Duc Varios 2 31-10-2006 12:14:33
Evento que se ejecuta al Pulsar el boton de Minimizar de una Forma AGAG4 Varios 2 09-10-2004 17:31:38
Pulsar botón y que cambien los números ciscu Varios 2 10-06-2004 20:51:03


La franja horaria es GMT +2. Ahora son las 09:26:57.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi