Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Adaptar código (https://www.clubdelphi.com/foros/showthread.php?t=97966)

Angel.Matilla 14-01-2026 18:30:58

Adaptar código
 
Hace años tenía instalado unos elementos para Builder/Delphi que permitía exportar directamente desde QR a PDF, Excel, Word, etc. Hace algo más de un año un virus me infectó el PC y se llevó por delante, entre otras cosas, esos elementos y por más que he buscado no he sido capaz de encontrar el fichero QRExport que los instalaba.

Por otra parte tengo instalada un impresora virtual Bullzip PDF Printer. En su página web he encontrado un código para automatizar la exportación de impresos en formato PDF, pero está escrito en C#. ¿Alguien podría ayudarme a migrarlo a C++? El código está en https://www.biopdf.com/guide/example..._auto_convert/ o se puede descargar desde https://www.biopdf.com/guide/example...0Documents.zip.

Gracias de antemano.

chenech 14-01-2026 19:08:36

Hola Angel, QuickReport te permite directamente exportar a PDF y Excel, a Word creo que no pero si a RTF, te adjunto un ejemplo a PDF que tenía por ahí antiguo:
Código:

                        AnsiString ASLocal = ExtractFilePath(ParamStr(0));
                        AnsiString ASFichero = ASLocal + "PDF\\" + ENumero->Text + ".PDF";
                        TQRPDFDocumentFilter *pdfFilter = new TQRPDFDocumentFilter(ASFichero);
                        Form49->QR1->ExportToFilter(pdfFilter);
                        pdfFilter->Free();
                        return;

Defino el fichero en ASFichero, que es la carpeta del ejecutable y ahí lo guardo con el nombre de la factura que tengo en ENumero->Text.
QR1 es el nombre del report y lo tengo en el Form49.
Tienes que tener el componente QRPDFFilter en el form donde está el report. Para EXCEL QRXMLSFilter.
Un saludo.

Angel.Matilla 15-01-2026 11:12:33

Cita:

Empezado por chenech (Mensaje 571692)
Hola Angel, QuickReport te permite directamente exportar a PDF y Excel, a Word creo que no pero si a RTF

Sí, lo sé pero para poder hacer esas exportaciones hacen falta los elementos que yo citaba que están en un fichero llamado QRExports. Hay más de un hilo mío (por ejemplo: Error al exportar un informe QR) a lo largo de bastantes años que lo cito, pero el problema es que, como dije, un virus se me llevó por delante un montón de cosas y entre ellas estaba ese QRExports que ahora no soy capaz de encontrar por ninguna parte.

chenech 15-01-2026 11:36:27

OK, no entendi bien la pregunta, creo que no te queda mas opción que reinstalar QuickReport para que te ponga esos componentes, que versión de C++ Builder usas?

Angel.Matilla 15-01-2026 11:42:45

Cita:

Empezado por chenech (Mensaje 571705)
OK, no entendi bien la pregunta, creo que no te queda mas opción que reinstalar QuickReport para que te ponga esos componentes, que versión de C++ Builder usas?

En este momento la 6.0 Enterprise, que no trae esos componentes.

chenech 15-01-2026 11:46:27

Para esa versión no tengo el QR, lo siento. Lo que si tengo son los fuentes de la de QR 6.00 build 4.28, igual los puedes compilar para esa versión de Builder?

Angel.Matilla 15-01-2026 11:53:02

Cita:

Empezado por chenech (Mensaje 571707)
Para esa versión no tengo el QR, lo siento. Lo que si tengo son los fuentes de la de QR 6.00 build 4.28, igual los puedes compilar para esa versión de Builder?

Eso si que no lo sé

chenech 15-01-2026 11:56:55

la mas antigua que encuentro es para 2009/2010, seguire buscando a ver, te aviso si encuentro.
Si no generas el informe y lo mandas a la impresora PDF como comentabas, debo tener algo de código sobre eso, lo buscaré.

Angel.Matilla 15-01-2026 12:01:14

Muchas gracias

chenech 15-01-2026 12:09:49

Primero asigno la impresora por defecto a una variable para dejarla luego otra vez:
Código:

int iDefecto = Printer()->PrinterIndex;
Asi busco la impresora que deseo, en este caso se llama TICKETQR, cambia TICKETQR por el nombre que tengas en la impresora o llamala siempre de alguna forma sencilla, ImpPDF por ejemplo entodos los pc y no te complicas la vida con los nombres que asigna:
Código:

        String nombre;
        for(int i=0;i<Printer()->Printers->Count;i++)
        {
                nombre = Printer()->Printers->Strings[i];
                if(nombre.UpperCase() == "TICKETQR")
                {
                        Printer()->PrinterIndex = i;
                        break;
                }
        }

Aqui vuelvo a dejar la de defecto:
Código:

Printer()->PrinterIndex = iDefecto;
En lugar de hacer un Preview, haces Print del QR para que genere el PDF, creo que deberia funcionar.
Esto te abriria el cuadro de dialogo para guardar el archivo, lo que no se es si se le puede passar el nombre y que lo guarde automaticamente.

Angel.Matilla 15-01-2026 12:20:42

Esta idea no se me había ocurrido. Tengo que probarlo. Gracias


La franja horaria es GMT +2. Ahora son las 06:34:14.

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