Ver Mensaje Individual
  #3  
Antiguo Hace 12 Horas
emailx45 emailx45 is offline
Miembro
 
Registrado: abr 2025
Posts: 23
Reputación: 0
emailx45 Va por buen camino
Thumbs up

Try this: (CONSOLE for tests... )

Código Delphi [-]
program ConverterBullzipCom;

{$APPTYPE CONSOLE}

uses
  System.SysUtils,
  System.Variants,
  Winapi.Windows,
  Winapi.ShellAPI,
  System.Win.ComObj,
  Winapi.Ole2;

procedure ExecutarAutomacaoBullzip;
var
  LBullzipSettings: OleVariant;
  LPrinterName    : string;
  LArquivoOrigem  : string;
  LRetorno        : NativeInt;
begin
  // 1. Inicializa COM (Delphi ya gestiona CoInitialize implícitamente al instanciar OleVariant,
  // pero podemos asegurarlo llamándolo si es necesario).
  CoInitialize( nil );
  try
    try
      // 2. Crea la instancia del objeto COM de Bullzip a partir del ProgID
      LBullzipSettings := CreateOleObject( 'Bullzip.PDFPrinterSettings' );

      // 3. Configura los parámetros de impresión automática utilizando el método SetValue
      // Nota: En Delphi con OleVariant, la llamada a métodos con parámetros es directa.
      LBullzipSettings.SetValue( 'Output', 'C:\destino\mi_documento.pdf' );
      LBullzipSettings.SetValue( 'ShowPDF', 'no' );
      LBullzipSettings.SetValue( 'ShowSettings', 'never' );
      LBullzipSettings.SetValue( 'ConfirmOverwrite', 'no' );

      // 4. Guarda la configuración en el archivo 'runonce.ini' (equivalente a WriteSettings(true))
      LBullzipSettings.WriteSettings( True );

      // 5. Libera la referencia COM (asignando Unassigned)
      LBullzipSettings := Unassigned;

      Writeln( 'Configuração inyectada. Enviando arquivo para "Bullzip PDF Printer"...' );

      // 6. Define la impresora de destino y el archivo de origen
      LPrinterName   := 'Bullzip PDF Printer';
      LArquivoOrigem := 'C:\origen\documento.txt';

      // 7. Envía el archivo a la impresora usando ShellExecute con el verbo 'printto'
      LRetorno := ShellExecute( 0, 'printto', PChar( LArquivoOrigem ), PChar( LPrinterName ), nil, SW_HIDE );

      if LRetorno > 32 then
        Writeln( '¡Comando de impresión enviado con éxito!' )
      else
        Writeln( 'Error al enviar a imprimir. Código: ', LRetorno );

    except
      on E: Exception do
      begin
        Writeln( 'Excepción capturada: ', E.Message );
      end;
    end;
  finally
    CoUninitialize( );
  end;
end;

begin
  ExecutarAutomacaoBullzip;
  Writeln( 'Presiona ENTER para salir...' );
  Readln;

end.

Última edición por emailx45 fecha: Hace 11 Horas a las 22:57:44.
Responder Con Cita