1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. Anuncie Aqui
    Anuncie aqui você Também: fdantas@4each.com.br

Mesclar documentos PDF

Discussão em 'EMS , HCM e Totvs 11' iniciado por tbranco, Março 29, 2022.

  1. af.dums

    af.dums Membro Ativo

    Olá.

    A principio a pdf_inc só consegue unificar quando todos os arquivos são gerados por ela mesmo, pelo menos isto que ocorreu em todos os testes que fiz e nas pesquisas que realizei...
    Tinha uma demanda de gerar a OP em PDF e mesclar com o desenho do produto, o caminho foi o do @bootstrapmaster para solucionar...
    Acho que atualmente a Totvs tem uma ferramenta em Java rodando no AppServer para mesclar (usada no FT0527), mas não estudei a fundo ela ainda, se é apenas para os boletos ou se pode ser usada para outras coisas...
  2. af.dums

    af.dums Membro Ativo

    Pessoal, segue uma forma de mesclar PDFs da mesma forma que a Totvs faz no FT0527 para mesclar DANFEs com Boletos usando uma biblioteva Java, o PDF pode ter sido gerado por qualquer ferramenta (PDFInclude, Imprimir como PDF, CAD, etc):
    Meu vídeo explicando:


    Biblioteca JAR:
    https://github.com/tsibley/multivalent-tools

    Meu exemplo completo:
    https://github.com/afdums/bakas-progress/tree/master/mescla_pdf

    Código:
    /* Como mesclar vários arquivos PDF em um só usando Progress 4GL */
    
    PROPATH = PROPATH + "," + "X:\bakas-progress\mescla_pdf".
    
    DEF TEMP-TABLE tt-arquivo NO-UNDO
        FIELD arquivo AS CHAR.
    
    DEF VAR c-arquivos AS CHAR NO-UNDO.
    
    CREATE tt-arquivo.
    ASSIGN tt-arquivo.arquivo = "X:\bakas-progress\mescla_pdf\teste\op_1.pdf".
    
    CREATE tt-arquivo.
    ASSIGN tt-arquivo.arquivo = "X:\bakas-progress\mescla_pdf\teste\desenho_1.pdf".
    
    ASSIGN c-arquivos = "".
    FOR EACH tt-arquivo:
        ASSIGN c-arquivos = c-arquivos + " " + tt-arquivo.arquivo.
    END.
    
    RUN pi-mesclar.
    
    IF RETURN-VALUE = "OK":U THEN
        MESSAGE "Arquivos mesclados"
            VIEW-AS ALERT-BOX INFO BUTTONS OK.
    
    PROCEDURE pi-mesclar:
        DEF VAR c-fullpath-jar AS CHAR    NO-UNDO.
        DEF VAR l-tem-java     AS LOGICAL NO-UNDO.
        DEF VAR c-temp-dir     AS CHAR    NO-UNDO.
        DEF VAR c-comando      AS CHAR    NO-UNDO.
        DEF VAR c-linha        AS CHAR    NO-UNDO.
        DEF VAR c-arquivo-bat  AS CHAR    NO-UNDO.
    
        ASSIGN c-fullpath-jar = SEARCH("jar/Multivalent20060102.jar").
    
        IF c-fullpath-jar = ? THEN DO:
            MESSAGE "Multivalent20060102 não encontrado"
                VIEW-AS ALERT-BOX ERROR BUTTONS OK.
            RETURN "NOK":U.
        END.
    
        ASSIGN c-temp-dir = SESSION:TEMP-DIRECTORY.
    
        ASSIGN c-comando = "java -version 2> " + c-temp-dir + "java-version.txt".
    
        OS-COMMAND SILENT VALUE(c-comando).
    
        ASSIGN l-tem-java = NO.
        INPUT FROM VALUE(c-temp-dir + "java-version.txt").
        REPEAT:
            IMPORT UNFORMATTED c-linha.
            IF c-linha MATCHES "*java version*" THEN DO:
                ASSIGN l-tem-java = YES.
                LEAVE.
            END.
    
        END.
        INPUT CLOSE.
    
        OS-DELETE VALUE(c-temp-dir + "java-version.txt").
    
        IF NOT l-tem-java THEN DO:
            MESSAGE "Java não está instalado ou" SKIP "JAVAPATH não configurado"
                VIEW-AS ALERT-BOX ERROR BUTTONS OK.
            RETURN "NOK":U.
        END.
    
        ASSIGN c-comando = "java -classpath " + c-fullpath-jar + " tool.pdf.Merge " + c-arquivos.
    
        ASSIGN c-arquivo-bat = c-temp-dir + "mesclar.bat".
    
        OUTPUT TO VALUE(c-arquivo-bat).
        PUT UNFORMATTED c-comando.
        OUTPUT CLOSE.
    
        OS-COMMAND SILENT VALUE(c-arquivo-bat).
    
        OS-DELETE VALUE(c-arquivo-bat).
    
        RETURN "OK":U.
    
    END PROCEDURE.
    
    
    Abraços

Compartilhe esta Página