Não sabe o que fazemos ainda? Dá uma olhadinha no nosso menu ali em cima ☝️
Este artigo irá explicar como gerar um arquivo PDF utilizando a classe FWMSPrinter para impressão via SPOOL, sem utilizar a tela de setup.
Configuração Inicial
Para gerar corretamente o arquivo PDF sem a tela de setup, o parâmetro cPrinter da classe FwMsPrinter() deve conter o nome completo da impressora, exemplo: “Microsoft Printer to PDF”.
Código de Exemplo
Abaixo, segue um exemplo de código que demonstra como utilizar a classe FWMSPrinter para gerar um arquivo PDF:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
#INCLUDE "RPTDEF.CH" #INCLUDE "FWPrintSetup.ch" #INCLUDE "TOTVS.ch" User Function MyCod128() local cCodBar := "789001006189" Local cCodINt25 := "34190184239878442204400130920002152710000053475" Local cLocal := "" Local cPrinter := "Microsoft Print to PDF" Local lAdjustToLegacy := .F. Local lDisabeSetup := .T. Local lPDFAsPNG := .F. Local lRaw := .T. Local lServer := .F. local lTReport := .F. Local lViewPDF := .T. Local n := 0 Local nI := 0 Local nQtdCopy := 1 Local oPrint rpcsetenv("99","01") nLinC := 10 //Linha que será impresso o Código de Barra nColC := 0.90 //Coluna que será impresso o Código de Barra nWidth := 0.0164 //Numero do Tamanho da barra. Default 0.025 limite de largura da etiqueta ? 0.0164 nHeigth := 1.5 //Numero da Altura da barra. Default 1.5 --- limite de altura ? 0.3 lBanner := .T. //Se imprime a linha com o código embaixo da barra. Default .T. nPFWidth := 0.2 //Número do índice de ajuste da largura da fonte. Default 1 nPFHeigth := 0.2 //Número do índice de ajuste da altura da fonte. Default 1 lCmtr2Pix := .T. //Utiliza o método Cmtr2Pix() do objeto Printer.Default .T. cFilePrintert := "Boleto"+ALLTRIM(STR(int(SECONDS())))+"Nota" cPathInServer := "\SPOOL\"//Caminho onde vai ser gerado o boleto grafico abaixo do System for n:=1 to 1 cFilePrintert := "Boleto"+ALLTRIM(STR(int(SECONDS()))) cNameArq:=cPathInServer+cFilePrintert+".PDF" oPrint := FWMSPrinter():New(cFilePrintert ,IMP_SPOOL/*IMP_PDF*/, lAdjustToLegacy, /*cPathInServer*/, lDisabeSetup , lTReport, /*@oPrintSetup*/, cPrinter, lServer, lPDFAsPNG, /*lRaw*/, /*lViewPDF*/, /*nQtdCopy*/ ) oPrint:SetResolution(72) oPrint:SetPortrait() oPrint:SetPaperSize(DMPAPER_A4) oPrint:SetMargin(60,60,60,60) // nEsquerda, nSuperior, nDireita, nInferior oPrint:cPathPDF:="C:\teste\" oPrint:lInJob := .F. oFont8 := TFont():New("Arial",9,8,.T.,.F.,5,.T.,5,.T.,.F.) oFont10 := TFont():New("Arial",9,10,.T.,.T.,5,.T.,5,.T.,.F.) oFont20 := TFont():New("Arial",9,20,.T.,.T.,5,.T.,5,.T.,.F.) oPrint:StartPage() // Inicia uma nova página nRow1 := 1 oPrint:Line (nRow1+0100,500,nRow1+0070, 500) oPrint:Line (nRow1+100,100,nRow1+0100,710) oPrint:Say (nRow1+0080,100,"Itaú Unibanco",oFont10 ) // [2]Nome do Banco oPrint:Say (nRow1+0080,513,"341"+"-7",oFont20 ) // [1]Numero do Banco oPrint:Say (nRow1+0110,100,"Código digitável",oFont8 ) oPrint:Say (nRow1+0120,100,"remetente | remetente" ,oFont8 ) oPrint:FWMSBAR("INT25" /*cTypeBar*/,11/*nRow*/ ,10/*nCol*/, cCodINt25/*cCode*/,oPrint/*oPrint*/,.T./*lCheck*/,/*Color*/,.T./*lHorz*/,0.02/*nWidth*/,0.8/*nHeigth*/,.T./*lBanner*/,"Arial"/*cFont*/,NIL/*cMode*/,.F./*lPrint*/,2/*nPFWidth*/,2/*nPFHeigth*/,.F./*lCmtr2Pix*/) oPrint:QRCode(0300,100,"QR Code gerado com sucesso", 100) oPrint:DataMatrix(300,300,"DataMatrix gerado com sucesso", 100) oPrint:EndPage() // Finaliza a pagina oPrint:Print() //efetua geração do rel em estado de Job NEXT Return |
Referências adicionais
Para saber mais sobre a classe FWMSPrinter, visite o site da [TOTVS](https://tdn.totvs.com/display/public/PROT/FWMsPrinter).
Fernando Bueno
Consultor em FBSOLUTIONS
Sou consultor na área de implantação de sistemas ERP, com experiência na análise e implantação de projetos de sistemas, configurando a estrutura do software, capacitando usuários-chaves, ministrando treinamentos e workshops.
Atuando desde 2005 no mercado de tecnologia, desenvolvendo e implantando e sistemas gerenciais, sistemas e sites web e ecommerce.
Siga-me no Linked In
Atuando desde 2005 no mercado de tecnologia, desenvolvendo e implantando e sistemas gerenciais, sistemas e sites web e ecommerce.
Siga-me no Linked In


