Pular para o conteúdo principal

Postagem em destaque

BlackTDN :: LeetCode 23: Mesclando K Listas Ordenadas com Harbour/xBase e Reutilização de Código

_Créditos das imagens: ChatGPT **Título:** LeetCode 23: Mesclando K Listas Ordenadas com Harbour/xBase e Reutilização de Código **Introdução** Olá, entusiastas de Harbour/xBase e desafios de programação! Depois de explorarmos como mesclar duas listas ordenadas no [nosso post sobre o LeetCode 21](https://www.blacktdn.com.br/2025/03/blacktdn-leetcode-21-merge-two-sorted.html), vamos dar um passo adiante e enfrentar um problema um pouco mais complexo: o LeetCode 23 - Merge K Sorted Lists. Neste artigo, vamos desvendar uma implementação em Harbour/xBase para este desafio, demonstrando como podemos inteligentemente reutilizar a solução que já construímos para o problema 21. Veremos como a modularidade e a construção sobre soluções anteriores podem simplificar problemas mais complexos. **O Problema: LeetCode 23 - Merge K Sorted Lists** O desafio é o seguinte: dado um array (`aLists` em nossa implementação) contendo `k` listas encadeadas, onde cada lista já está ordenada em ordem cres...

PDFCreator :: Gerando Marca D´agua

Existem duas maneiras para a geração de Marcas D´agua em arquivos PDF  usando o PDFCreator.

A primeira  é definindo o texto a ser impresso como “Marca D´agua”

image

Ao gerarmos um relatório, usando como impressora o PDFCreator, teremos:

image

A segunda opção, para a geração da Marca D´agua, é usar o Script (em VB) desenvolvido por Frank Heindörfer e que se encontra em Scripts\RunProgramAfterSaving\AddWatermarkToPDF.vbs da instalação padrão do PDFCreator. Esse script utiliza o aplicativo pdftk.exe do PDFLabs para inserir a Marca D´agua. Seu uso é bem simples.

Primeiro, baixe o programa pdftk.exe e descompacte-o, de preferência, em \windows\system32  para que possa ser executado via linha  de comando sem a necessidade de mapeamento do “path”.

  1. Abra o PDFCreator e em “Ações” selecione a “aba” “Ações depois de Salvar”;
  2. image 
  3. Abra o “script” para edição e ;
  4. image
  5. modifique os valores das constantes PathToPdftk (indica o diretório de instalação do pdftk.exe)  e WatermarkPDF (indica o arquivo PDF com a marca d´agua a ser utilizado) e salve as alterações;
  6. image
  7. Com isso, todo documento PDF gerado, usando PDFCreator, conterá a marca d´agua definida em WatermarkPDF. Ex.:
  8. image 

Uma outra forma de gerar a marca d´agua, agora sem usar o PDFCreator, é a utilização direta do programa pdftk.exe via linha de comando. Digite pdtfk –help para as opções de linha de comando ou consulte o modelo em VBScript para saber como implementá-lo usando, por exemplo WaitRun ou WaitRunSrv.

Ex.:

Para a inclusão da Marca D´agua no Client.

#INCLUDE "PROTHEUS.CH"
User Function WatermarkPDF( cPDFFile , WatermarkPDF , cPDWatermarkPDF )

    Local cCMD := ""
    cCMD := "pdftk.exe"
    cCMD += " "
    cCMD += cPDFFile
    cCMD += " "
    cCMD += "background"
    cCMD += " "
    cCMD += WatermarkPDF
    cCMD += " "
    cCMD += "output"
    cCMD += " "
    cCMD += cPDWatermarkPDF

Return( WaitRun( cCMD ) )   

Para a inclusão da Marca D´agua no Server

#INCLUDE "PROTHEUS.CH"
User Function WatermarkPDF( cPDFFile , WatermarkPDF , cPDWatermarkPDF )

    Local cCMD := ""
    cCMD := "pdftk.exe"
    cCMD += " "
    cCMD += cPDFFile
    cCMD += " "
    cCMD += "background"
    cCMD += " "
    cCMD += WatermarkPDF
    cCMD += " "
    cCMD += "output"
    cCMD += " "
    cCMD += cPDWatermarkPDF

Return( WaitRunSrv( cCMD , .T. , "c:\windows\system32" ) )

Para maiores informações sobre a WaitRunSrv consulte: Protheus :: Executando aplicações externas no "Server" utilizando WaitRunSrv

[]s
иαldσ dj

Comentários

  1. Ótima dica Naldo,
    Aproveitando...
    Tem alguma maneira de colocar o nome do arquivo PDF no cabeçalho de cada página referente a cada PDF vinculado?

    Atenciosamente,
    Otávio Sparrenberger

    ResponderExcluir

Postar um comentário

Postagens mais visitadas