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.

The popup will be closed in 10 segundos...
The popup will be closed in 10 segundos...