Geração de PDF com Fortes Reports
Boa tarde pessoal,
estou utilizando o Delphi 7 com o Fortes Reports. Sei que o fortes possui a opção de gerar o relatório em PDF mas existe alguma forma de fazer isso sem utilizar o preview. Preciso gerar diversos arquivos a partir de uma lista então não preciso realizar o preview dos relatórios. Alguém pode me ajudar? Ah! só mais uma coisa...qual o componente que uso para gerar um relatório com duas páginas?
Muito obrigado.
estou utilizando o Delphi 7 com o Fortes Reports. Sei que o fortes possui a opção de gerar o relatório em PDF mas existe alguma forma de fazer isso sem utilizar o preview. Preciso gerar diversos arquivos a partir de uma lista então não preciso realizar o preview dos relatórios. Alguém pode me ajudar? Ah! só mais uma coisa...qual o componente que uso para gerar um relatório com duas páginas?
Muito obrigado.
Zooropa
Curtidas 0
Respostas
Sremulador
16/01/2009
amigo utilize primeiramente o prepare, depois salve o relatório, vc podera achar mais detalhes no forum oficial ou no [url]www.produsys.com.br/forum[/url]
GOSTEI 0
Zooropa
16/01/2009
amigo utilize primeiramente o prepare, depois salve o relatório, vc podera achar mais detalhes no forum oficial ou no [url]www.produsys.com.br/forum[/url]
Amigo, agradeço a dica. O fórum está com a maioria dos links fora do ar mas eu dei uma lida na documentação existente no site e consegui tirar minhas dúvidas. Minha única dificuldade é a seguinte: o arquivo .pdf gerado pelo fortes tem 40MB enquanto que o arquivo original não chega a 1MB. Existe uma forma de enxugar este arquivo? Detalhe: o arquivo possui três imagens .jpg mas a maior delas ocupa apenas 240Kb. Agradeço pela ajuda.
GOSTEI 0
Zooropa
16/01/2009
Boa tarde Pessoal,
será que alguém pode me ajudar na dúvida acima? Muito obrigado.
será que alguém pode me ajudar na dúvida acima? Muito obrigado.
GOSTEI 0
Zooropa
16/01/2009
Olá pessoal, postarei aqui o código que estou utilizando para gerar o PDF...infelizmente ele está gerando um arquivo com mais de 40MB e o arquivo original tem menos de 1MB.
Ainda estou precisando de ajuda neste caso...se alguém souber como devo proceder, agradeço
FrmRelatorio.RLReport1.Prepare; FrmRelatorio.RLPDFFilter1.FilterPages(FrmRelatorio.RLReport1.Pages); FrmRelatorio.RLReport1.SaveToFile(Destino);
Ainda estou precisando de ajuda neste caso...se alguém souber como devo proceder, agradeço
GOSTEI 0
Sremulador
16/01/2009
amigo, seu relatório tem umagens, o problema pode esta ae, se não me engano ele não indexa alguns itens.
GOSTEI 0
Steve_narancic
16/01/2009
E ai amigo, conseguiste resolver o problema com o tamanho dos arquivos pdf gerados?
GOSTEI 0
Ivanh
16/01/2009
FrmRelatorio.RLReport1.Prepare; FrmRelatorio.RLReport1.DefaultFilter := RLPDFFilter1; FrmRelatorio.RLReport1.SaveToFile(Destino);
Tenta isso
GOSTEI 0
Steve_narancic
16/01/2009
FrmRelatorio.RLReport1.Prepare; FrmRelatorio.RLReport1.DefaultFilter := RLPDFFilter1; FrmRelatorio.RLReport1.SaveToFile(Destino);
este código não seria para salvar o relatorio sem dar o preview?
GOSTEI 0
Ivanh
16/01/2009
[quote:204c30c171=´ivanh´]
Tenta isso
FrmRelatorio.RLReport1.Prepare; FrmRelatorio.RLReport1.DefaultFilter := RLPDFFilter1; FrmRelatorio.RLReport1.SaveToFile(Destino);
este código não seria para salvar o relatorio sem dar o preview?[/quote:204c30c171]
[b:204c30c171]Exatamente[/b:204c30c171], naum foi essa a pergunta????
GOSTEI 0
Sremulador
16/01/2009
amigo o problema maior e que o filtro não trata imagens redundantes.
se você puder dar uma contribuilçao será muito bem vinda
function TRLPDFFilter.WriteBitmap(aBitmap:TBitmap):integer; var begstm:integer; endstm:integer; lenat :integer; begin lenat:=AddObj; Inc(fImageCount); if fImageCount>Length(fImages) then SetLength(fImages,Length(fImages)*2+ImagesInc); fImages[fImageCount-1].ImageObjAt:=BeginObj; Result:=fImageCount; WriteLn(´/Type/XObject´); WriteLn(´/Subtype/Image´); WriteLn(´/Width ´+IntToStr(aBitmap.Width)); WriteLn(´/Height ´+IntToStr(aBitmap.Height)); WriteLn(´/ColorSpace/DeviceRGB´); WriteLn(´/BitsPerComponent 8´); WriteLn(´/Length ´+PDF_IndirectObjStr(lenat)); WriteLn(´/Filter [/ASCIIHexDecode]´); begstm:=BeginStream; WriteBitmapData(aBitmap); WriteLn(´>´); endstm:=EndStream; BeginShortObj(lenat); WriteLn(IntToStr(endstm-begstm)); EndShortObj; end;
function CreateImageObj(aObj:TRLImageObject):integer; var grp:TGraphic; bmp:TBitmap; crc:cardinal; imf:TRLImageFile; i :integer; begin crc:=CRC32(aObj.Data); i:=0; while (i<fImageFiles.Count) and (TRLImageFile(fImageFiles[i]).ImageCRC<>crc) do Inc(i); if i<fImageFiles.Count then Result:=TRLImageFile(fImageFiles[i]).ImageId else begin bmp:=nil; grp:=FromMetaGraphic(aObj.Data); try if grp is TBitmap then bmp:=TBitmap(grp) else begin bmp:=NewBitmap(grp.Width,grp.Height); bmp.Canvas.Draw(0,0,grp); end; // retorna o indice da imagem Result:=WriteBitmap(bmp); imf:=TRLImageFile.Create; imf.ImageId :=Result; imf.ImageCRC:=crc; fImageFiles.Add(imf); finally if (bmp<>nil) and (bmp<>grp) then bmp.free; grp.free; end; end; end;
se você puder dar uma contribuilçao será muito bem vinda
GOSTEI 0