Ir para conteúdo
  • Cadastre-se

TiagoTecchio

Membros Pro
  • Total de ítens

    107
  • Registro em

  • Última visita

Sobre TiagoTecchio

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

TiagoTecchio's Achievements

  1. OK, grato pelas informações. Usamos o Delphi XE6, que não tinha o FR como opção. Neste caso usamos uma versão do FR (a 4) adquirida uns anos antes.
  2. Existem as opções, mas tentei desativar, ativar, enfim, combinei todas elas e não funciona. É um bug da versão e que foi resolvido nas versões posteriores.
  3. 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.
  4. 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
  5. Olá Renato, Já tentei todas estas opções, combinações entre elas e infelizmente o PDF continua inchado.
  6. 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.
  7. 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?
  8. Bom dia Victor, OK, sem problemas. Eu suspeitei que haveria algum efeito colateral. Vou adaptar para passar o sequencial com havia feito inicialmente. Grato pela atenção.
  9. Boa tarde Alexandre, Anexei o arquivo ajustado. Conforme a regra da montagem do nosso número via API (https://apoio.developers.bb.com.br/referency/post/5f4fb7f5b71fb5001268ca44) ACBrBoletoW_BancoBrasil_API.pas
  10. Bom dia, Gostaria de sugerir um ajuste no registro de boletos via API no Banco do Brasil. Nos prints anexados (método RequisicaoJson na unit ACBrBoletoW_BancoBrasil_API) o nosso número passado para o body JSON está sendo remontado pela função MontarCampoNossoNumero. Utilizo o AcbrBoleto somente realizar o registro e o meu sistema já montou o nosso número de 17 posições previamente, mas o componente está reformatando, o que me causou alguns transtornos. Para contornar tive que fazer um copy ao passar o nosso número para o componente TAcbrTitulo. var doc: TACBrTitulo; begin doc := acbrGerador.CriarTituloNaLista doc.NossoNumero := Copy(qrRec.FieldByName('NOSSONRO').AsString, 8, 10) A minha sugestão é caso a propriedade NossoNumero esteja preenchida, o componente utilize este valor para alimentar o campo JSON numeroTituloCliente ao invés de tentar remontar o nosso número utilizando o convênio. Seria possível? Ou causaria efeitos indesejados?
  11. 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;
  12. 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;
  13. 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).
  14. 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.
  15. 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.
×
×
  • 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.