Imprimindo PDF - Não abrindo

Discussão em 'EMS , HCM e Totvs 11' iniciado por Marcos Flizikowski, Maio 2, 2023.

  1. Marcos Flizikowski

    Marcos Flizikowski Membro Participativo

    Ola pessoal.
    Desenvolvi uma funcionalidade buscando do site da progress para fazer impressão em PDF, mas estou somente com um problema eu não quero que abra o ADOBE, que ele fica de forma silenciosa por trás e faça a impressão.

    Pois com este programa ele abre o Adobe, faz a impressão e fecha o Adobe.

    Segue abaixo a procedure onde passo o nome do arquivo e a impressora que desejo imprimir, onde na impressora eu passo o endereço da mesma ou nome dela no Windows.

    PROCEDURE pi-imprimindo.
    DEFINE VARIABLE proc AS System.Diagnostics.Process NO-UNDO.
    DEFINE VARIABLE startInfo AS System.Diagnostics.ProcessStartInfo NO-UNDO.

    DEFINE INPUT PARAMETER sFileName AS CHARACTER NO-UNDO.
    DEFINE INPUT PARAMETER sPrinter AS CHARACTER NO-UNDO.

    DEFINE VARIABLE sArgs AS CHARACTER NO-UNDO.

    ASSIGN startInfo = new System.Diagnostics.ProcessStartInfo()
    startInfo:FileName = sFileName.

    /* Choose the verb based on whether the file is to be printed to network printer or to the default local printer */
    IF INDEX ( sPrinter, "\\") > 0 THEN DO:
    /* prints to a network printer */
    startInfo:Verb = "printto".
    END.
    ELSE DO:
    /* prints to the local default printer */
    startInfo:Verb = "print".
    END.
    /* To print on a non-default printer add the following line, with a properly initialized value for sPrinter:
    */
    startInfo:Arguments=sPrinter.

    /* This code-change will also be needed for the attached .p file */

    ASSIGN
    startInfo:UseShellExecute = FALSE
    startInfo:WindowStyle = System.Diagnostics.ProcessWindowStyle:HIDDEN
    startInfo:CreateNoWindow = TRUE
    proc = System.Diagnostics.Process:Start(startInfo).

    /* Wait a maximum of 10 sec for the process to finish */
    proc:WaitForExit(10000).

    IF NOT proc:HasExited THEN DO:
    proc:Kill().
    proc:Dispose().
    END.

    END PROCEDURE.


    Se alguém puder me dizer como faço para imprimir sem que abra o Adobe usando esta procedure, agradeço.

    Atenciosamente.
  2. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

  3. Marcos Flizikowski

    Marcos Flizikowski Membro Participativo

    Obrigado usei e ficou melhor que o programa que eu desenvolvi.
    rafael.andrade curtiu isso.

Compartilhe esta Página