Ir para conteúdo
  • Cadastre-se

TiagoTecchio

Membros Pro
  • Total de ítens

    178
  • Registro em

  • Última visita

Tudo que TiagoTecchio postou

  1. Bom dia Victor, Grato pela resposta. Era isso mesmo que eu queria saber. Então a versão mais atualizado do FastReport resolve o problema que estou tendo com versão 4. Vamos providenciar a atualização durante o ano. Obrigado e um bom dia.
  2. Bom dia, Para tentar exemplificar o problema, gerei dois PDFs. Tamanho da página é A4: 1 - gerado pela exportação padrão do FastReport (256 kbytes) 2 - outro gerado pelo SynPDF (4 kbytes) Anexei também o arquivo fp3, referente ao relatório em si. São apenas dois memos com um texto justificado, o primeiro com tags HTML para negritar, e outro sem. fast.fp3 gerado-pelo-fastreport.pdf gerado-pelo-synpdf.pdf
  3. Olá Renato, Já tentei todas estas opções, combinações entre elas e infelizmente o PDF continua inchado.
  4. Olá Alexandre, Grato pela dica. Já tinha verificado a implementação o FPDF que o Daniel criou, é bem interessante. Mas converter os nossos relatórios (ou pelo menos estes contratos) para uma nova engine está fora do radar, pois é muita coisa. Usamos o FastReport extensivamente, gosto bastante dele devido a flexibilidade e velocidade, só este problema do tamanho do PDF que está me incomodando.
  5. Boa tarde colegas, Estou usando o FastReport 4 para gerar os relatórios no meu software e a exportação para PDF gera arquivos gigantes quando utilizo o recurso AllowHTMLTags do objeto TfrxMemoView. Acontece que preciso destacar algumas palavras em negrito pois trata-se de um contrato com múltiplas páginas. Uma vez gerado o PDF, percebe-se que o FastReport criou uma imagem da página contendo o texto formatado (não é possível selecionar o texto, por exemplo). Tentei utilizar a classe SynPDF (Synopse PDF Engine) como alternativa: ela até funciona, o PDF fica minúsculo e a qualidade é excelente porém a borda direita dos textos fica truncada (imagem anexada). Tentei entrar em contato com o desenvolvedor para ver uma possível solução mas fui solenemente ignorado A pergunta: as versões mais novas do FastReport resolvem este problema do tamanho?
  6. Bom dia, Grato pela dica. Fiz alguns testes usando o seu exemplo e consegui tratar/contornar o redirect do Cloudflare. Precisei ajustar esta parte: If sURLRedirect <> '' Then HTTP.HTTPMethod('POST', sURLRedirect); Para esta (recriando o objeto e adicionando os headers/body novamente): urlRedirect := Trim(objHttp.Headers.Values['Location']); if urlRedirect <> EMPTY_STR then begin objHttp.Free; objHttp := THTTPSend.Create; FH.StrParaStream(synHttp.Document, vs); objHttp.MimeType := 'application/json'; for tmp in LHeaders do objHttp.Headers.Add(tmp); Result := objHttp.HTTPMethod(pMetodo, urlRedirect); end;
  7. Segue um exemplo de como utilizo. Neste caso eu criei uma classe para abstrair o Synapse, mas você pode utilizar diretamente o objeto THTTPSend. No código abaixo existem algumas referências a funções auxiliares para converter Streams e caracteres Unicode, mas acho que dá para entender o contexto geral. Uses: httpsend, synautil, synacode Para usar: Enviar('POST', 'https://endereco.da.api/v1/endpoint', '{"x": "2333232", "x1": "12", "dt": "xxxxx}', retorno); O seu header de requisição teria que ser inserido em uma lista do objeto LHeaders. function Enviar(const pMetodo, pURL, pDadosEnvio: string; var pRetorno: TRetRequisicao): Boolean; var synHttp: THTTPSend; mstr: TMemoryStream; stmResp, stmDados: TStringStream; vs: RawByteString; tmp: string; begin synHttp := THTTPSend.Create; mstr := TMemoryStream.Create; try vs := UTF8Encode(PDadosEnvio); FH.StrParaStream(synHttp.Document, vs); synHttp.MimeType := 'application/json'; //'application/x-www-form-urlencoded'; for tmp in LHeaders do synHttp.Headers.Add(tmp); Result := synHttp.HTTPMethod(pMetodo, pURL); if Result then begin mstr.CopyFrom(synHttp.Document, 0); pRetorno.Code := inttostr(synHttp.ResultCode); pRetorno.Response := FH.AjustaChrEspecial(FH.MemoryStreamParaString(mstr), True); end else begin pRetorno.Code := inttostr(synHttp.ResultCode); pRetorno.Response := FH.SeStrVazia(synHttp.Sock.LastErrorDesc, synHttp.ResultString); end; finally synHttp.Free; mstr.Free; end; end;
  8. Eu utilizo o XE6 com o Synapse e atende perfeitamente 99% das situações. Tentou utilizar esta classe? É até mais simples que o Indy (o ACBr usa extensivamente o synapse).
  9. Bom dia. Parece que o Indy do XE7 está desatualizado - e pelo que li as versões a partir de 2018 corrigiram diversos problemas em relação ao SSL (infelizmente não consegui mais achar o link do StackOverflow onde havia lido sobre isso). Desta forma a versão Alexandria está OK.
  10. Bom dia Diego, Grato pelo retorno e os links. Já havia pesquisado todos os links que o Google/Bing/Duck sugeriram . Uma das sugestões que encontrei foi atualizar o Indy, porém o meu Delphi é mais antigo (XE6) e fiquei com receio de criar mais problemas ao atualizar a biblioteca. A solução encontrada foi utilizar a suíte de componentes Overbyte ICS - já utilizava ela para situações específicas. É uma biblioteca opensource, bastante ampla e mais complexa que o Synapse, mas a recomendo fortemente. https://wiki.overbyte.eu/wiki/index.php/Main_Page https://wiki.overbyte.eu/wiki/index.php/ICS_Download https://www.overbyte.eu/frame_index.html Atualizei para a última versão devido ao SSL, fiz os testes e deu certo. Utilizei as classes TSslHttpCli e TSslContext tanto para GET quanto POST.
  11. Boa tarde colegas. Estou tentando realizar algumas requisições (GET a princípio) em uma API que está atrás de um Cloudflare. Tenho utilizado o Synapse para todas as requisições que preciso (pix e APIs em geral) e funciona bem. Contudo a API retorna um código 301-Moved Permanently. Não identifiquei uma maneira de redirecionar usando synapse. Fiz umas pesquisas e tentei utilizar o componente Indy TIdHttp. O código de retorno até muda de 301 para 403-Forbidden, mas creio que o Cloudflare esteja bloqueando a requisição. Obs: testando pelo Postman funciona . Caso alguém tenha passado por situação semelhante, agradeço qualquer comentário.
  12. Bom dia, O EMV vem no campo "pixCopiaECola" e tem funcionando - é este o campo usado para gerar o QRCode. Na versão 1 da API era usado o campo "textoImagemQRcode", mas não pode mais utilizado em aplicações novas. O ambiente de homologação do BB é traiçoeiro, apresenta resultados inconsistentes e é instável. Melhor seria utilizar o ambiente de produção do seu cliente e gerar algumas cobranças com valores simbólicos - foi o que fiz e deu certo.
  13. Bom dia colegas! Sei que a maioria de nós que utilizamos o ACBR trabalha com o bom e velho RAD Studio/Delphi, mas além deste quais outras ferramentas/linguagens os colegas usam? Vantagens, desvantagens? Programação para web ou apps? Abraço e bom final de semana para todos.
      • 2
      • Curtir
  14. 1995 aprendi Turbo Pascal na escola num 486, depois VB (não fui pra frente) e Delphi (meu companheiro há mais de 20 anos). Há uns 3 anos cai em amores pelo Dart, a linguagem usada pelo Flutter - disparado a linguagem mais interessante que já trabalhei. Gosto muito do C# também pela sua documentação, exemplos e semântica.
  15. É suficiente. Se você rodar o BAT (esperar e tomar um café no intervalo) e instalar novamente funciona. O que sugeri foi uma maneira mais rápida de remover os arquivos.
  16. Bom dia, Se me permite uma dica, instale o aplicativo Everything no seu PC (https://www.voidtools.com/). Ele indexa todos os arquivos do HD e você consegue localizar qualquer arquivo instanteamente. Uma vez instalado basta colocar a string abaixo para localizar todas as referências do ACBR e removê-las antes de uma nova instalação: ACBr*.bpl|ACBr*.dcp|ACBr*.dcu|PCN*.bpl|PCN*.dcp|PCN*.dcu|SYNA*.bpl|SYNA*.dcp|SYNA*.dcu|pnfs*.dcu|pcte*.bpl|pcte*.dcp|pcte*.dcu|pmdfe*.bpl|pmdfe*.dcp|pmdfe*.dcu|pgnre*.dcp|pgnre*.bpl|pces*.bpl|pgnre*.dcu|pces*.dcp|pces*.dcu|pca*.dcp|pca*.dcu
  17. Você está utilizando a versão 2 da API do BB? Porque se não me engano, a versão 1 é válida somente para clientes que foram contratados até maio ou junho - novas aplicações ou contratos somente na v2.
  18. Boa tarde, Eu adaptei o método de geração de QrCode, aplicando um zoom no bitmap. Desta forma, o fator do zoom representa o fator de multiplicação dos pixels da imagem. Se não me engano, a classe TDelphiZXingQRCode está distribuída junto ao ACBR. procedure MontaQRCode( const ATexto: string; var pBmpQRCode: TBitmap; const pZoom: Integer = 1 ); var J, I, xi, xj, TJ, TI, zoom : Integer; objQRCode : TDelphiZXingQRCode; cor: TColor; begin zoom := FH.SeSenao(pZoom >= 1, pZoom, 1); objQRCode := TDelphiZXingQRCode.Create; try objQRCode.Data := ATexto; objQRCode.Encoding := qrISO88591; objQRCode.QuietZone := 4; pBmpQRCode.SetSize(objQRCode.Rows * zoom, objQRCode.Columns * zoom); for I := 0 to objQRCode.Rows - 1 do begin for J := 0 to objQRCode.Columns - 1 do begin if (objQRCode.IsBlack[I, J]) then cor := clBlack else cor := clWhite; if zoom > 1 then begin TI := ((I+1) * zoom); for xi := 1 to zoom do begin Dec(TI); TJ := ((J+1) * zoom); for xj := 1 to zoom do begin Dec(TJ); pBmpQRCode.Canvas.Pixels[TJ, TI] := cor; end; end; end else pBmpQRCode.Canvas.Pixels[J, I] := cor end; end; finally objQRCode.free; end; end; Para testar: procedure TFSisUtil.Button4Click(Sender: TObject); var path, tx: string; bitmap : TBitmap; begin tx := 'este é um teste de zoom de qrcode'; bitmap := TBitmap.Create; try MontaQRCode(tx, bitmap, 4); path := 'c:\teste\' + FormatDateTime('ddmmyyyy.hhmmsszzzz', Now) + '.bmp'; bitmap.SaveToFile(path); finally bitmap.Free; end; end;
  19. Bom dia. O documento foi publicado pela Fecomercio RS. http://sindiatacadistas.sindisoft.net/Estatisticas/ContadorClique/?parm=XO8tFmYWZzyqCm9bGewoLj5QYr6i3KsnnFnUx67pLzbxCohdUKkF4eILFDwikLwiYoQvo1CpAlasem9bGeY5j7PG5kX0LMZeRzCyJD0kDxFcUtY7xSnscSYhCtHrjdmYhulnxubWMBUj0rYLCb6difqksDk7C24kyP0qHNihteMrEFHmm0K4Bj8v7XE9cooEmg==
  20. Boa tarde Elias. Grato pelo pronto retorno. Neste meio tempo alterei o fonte desabilitando a consistência e consegui gerar a cobrança. A título de informação, a API v2 do BB está intermitente, verificando o forum deles me deparei com várias pessoas relatando 404 ao criar o PIX. Na insistência, a cobrança é criada. Obrigado.
  21. Boa tarde. Estou tentando validar a v2 da API do BB e me deparei com as situações abaixo (em produção). Veja que configurei para utilizar arquivo PFX, mas o componente não reconhece a configuração corretamente. Atualizei os fontes hoje de manhã. Estou deixando passar alguma coisa?
  22. Boa tarde. Anexo está o arquivo Infisc.LerXml.pas com ajustes para ler as tags do grupo dadosDaObra e tag empreitadaGlobal. Infisc.LerXml.pas
  23. Boa tarde Italo, Teste OK. Obrigado pelo retorno.
  24. Boa tarde Italo, Anexo está um XML de exemplo com os dados. Obrigado. NFS-Sai-15630.xml
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.