Como adicionar uma imagem dinâmica em um modelo dot

Saiba como ter uma imagem que você pode preencher automaticamente em um modelo dot do Word (nesse exemplo usando AdvPL).

Primeiramente, no Word clique na aba Inserir, e depois em Imagem.

Inserindo Imagem

Agora, ao selecionar a imagem, selecione a opção Vincular ao Arquivo. Fique atento em que diretório a imagem está, por exemplo, C:\TOTVS\imagem.bmp.

Vincular ao Arquivo

Crie uma função que baixe a imagem do Protheus e salve em cima desse arquivo, por exemplo.

User Function zBaixaImg(cOrigem)
    Local cArquivo   := "C:\TOTVS\imagem.bmp"
    Local cArqBranco := "SEM_IMG"
    Default cOrigem  := SB1->B1_BITMAP
 
    //Se existir o arquivo, deleta
    If File(cArquivo)
        FErase(cArquivo)
    EndIf
 
    //Se tiver origem, pega a imagem do repositório de imagens
    If ! Empty(cOrigem)
        RepExtract(Alltrim(SB1->B1_BITMAP), cArquivo)
 
    //Senão, tenta buscar de uma imagem padrão do repositório, no nosso exemplo, usamos a imagem "SEM_IMG"
    Else
        RepExtract(Alltrim(cArqBranco), cArquivo)
    EndIf
Return

No exemplo acima, a função recebe por parâmetro o código para baixar do repositório, inclusive se não existir imagem, ele busca do registro “SEM_IMG”.

Agora é só chamar essa função antes de gerar seu arquivo do Word, caso tenha dúvidas de como criar, leia Gerando um arquivo do Word pelo AdvPL usando integração com Modelos DOT.

Essa dica foi enviada por Renan Martins e Vinicius Torres, obrigado jovens.

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

4 Responses

  1. George Allan disse:

    Muito legal Atilio, obrigado por compartilhar

  2. Renato disse:

    A partir de um banco de conhecimento, com mais de uma imagem, como podemos automatizar a impressão delas integrando o Protheus e o Word?

    • Bom dia Renato, tudo joia?

      Há um tempo atrás postaram no nosso grupo do WhatsApp uma dúvida parecida, pode ser que te ajude também, segue a resposta que enviamos na ocasião:

      […]
      Então, para imprimir dinamicamente do banco de conhecimento (ACB / AC9 / ACC) para uma integração com o modelo dot, seria necessário:

      a. Na sua função, pegue a informação cadastrada no banco de conhecimento (na ACB e AC9)
      b. Ela vai apontar para um arquivo dentro da pasta conforme o MV_DIRDOC
      c. Utilize a função __CopyFile ou a CpyS2T e copie para uma pasta local, por exemplo, C:\TOTVS\
      d. Renomeie o arquivo copiado na pasta local, para ele ficar com o mesmo nome do que foi vinculado ao Word, use por exemplo a função FRename
      e. Agora você pode acionar a integração com o Word através das funções OLE_*, que daí quando ele encontrar que deve abrir uma imagem vinculada ao arquivo (ex.: C:\TOTVS\imagem.bmp), ele vai exibir a que você copiou e renomeou nos passos c e d
      […]

      Um grande abraço.

Deixe uma resposta

Terminal de Informação