Fórum Como converter um .DOC para .PDF #325929
23/07/2006
0
Alguem pode me indicar um componente ao qualquer coisa pra resolver isso.
Desde agradecço a qualquer ajuda.
Ataidesg
Curtir tópico
+ 0Posts
24/07/2006
Cabelo
talvez este tópico possa ajudar...
http://forum.devmedia.com.br/viewtopic.php?t=75490&start=0&postdays=0&postorder=asc&highlight=&sid=13e6ab074427dbefc98a5624c6a45e45
OBS : lembre-se... antes de postar um novo tópico, realize uma pesquisa para ter certeza que o assunto já não foi discutido aqui no fórum..
um abraço
Gostei + 0
24/07/2006
Ataidesg
Com certeza meu caro colega Cabelo, mas ja havia garimpado tudo a respeito, inclusive este seu link antes de fazer o questionamento, mas como nenhuma solução era a princípio muito boa resolvi questionar novamente, eu tenho o quickreport e uso ele, inclusive envio e-mail com PDF e JPG, mas imaginei existir uma outra solução para este problema, mas me diz uma coisa tem como me mandar um passo a passo de como resolvel isso, mas não quero dar preview, queria montar uma solução dentro da aplicação que me convertesse este .DOC em .PDF, se puder em emplicar ou enviar alguma coisa no meu e-mail eu agradeceria muito.
:wink:
Gostei + 0
24/07/2006
Cabelo
Na verdade vc não prcisa dar um preview... vc pode montar tudo em RUN - Time, e depois mandar converter para PDF sem dar um preview...
eu criei um componente para .CLX que faz esta operação sem precisar de abrir o relatório na tela..
mas só funciona em .CLX :lol: :oops:
não sei ainda o motivo, só sei que em .VCL não funciona..
para gerar o .PDF fiz assim :
primeiro carrego em um Stream o conteudo do .DOC.
carrego o .DOC num QRReport.
Sem dar um preview, uso o componente QRPDFFilter para gerar o .PDF.
Sem dar nenhum preview, funciona..
qualquer dúvida posta aê...
um abraço.
Gostei + 0
24/07/2006
Ataidesg
Ok, caro colega Cabelo, eu vou tentar fazer a mesma coisa, e te falo se deu certo, muito grato pela dica.
Gostei + 0
24/07/2006
Ataidesg
Gostei + 0
24/07/2006
Cabelo
Para realizar esta procedure o clientdataset deve estar ponteirado no resgistro que vc deseja tranformar em PDF...
Um arquivo gravado no BD como Blob.
var v_stream : TStream; v_caminho, v_nome_arquivo : string; begin v_caminho := ´C:\´; v_nome_arquivo := ´TESTE´; v_stream := clientdataset.createblobstream(clientdataset.fieldbyname(´campo blob´), bmread); QRRich.LoadFromStream(v_stream); QRReport.ExportToFilter(TQRPDFDocumentFilter.Create(v_caminho+v_nome_arquivo+´.PDF´));
se vc deseja procurar um arquivo no HD..
var v_caminho, v_nome_arquivo : string; begin v_caminho := ´C:\´; v_nome_arquivo := ´TESTE´; QRRich.LoadFromFile(caminho do arquivo no HD); QRReport.ExportToFilter(TQRPDFDocumentFilter.Create(v_caminho+v_nome_arquivo+´.PDF´));
sendo que
Estes componentes podem ser criados em RUN - Time ou serem inseridos em um form... vc é que decide..
QRRich = TQRRichText;
QRReport = TQuickRep;
TQRPDFDocumentFilter = TQRPDFFilter;
como vc pode ver... sem nenhum preview, e seu PDF estará no caminho indicado...
C:\TESTE.PDF
um abraço
Gostei + 0
24/07/2006
Ataidesg
var v_stream : TStream; v_caminho, v_nome_arquivo : string; begin v_caminho := ´C:\´; v_nome_arquivo := ´TESTE´; v_stream := clientdataset.createblobstream(clientdataset.fieldbyname(´campo blob´), bmread); QRRich.LoadFromStream(v_stream); QRReport.ExportToFilter(TQRPDFDocumentFilter.Create(v_caminho+v_nome_arquivo+´.PDF´));
var v_caminho, v_nome_arquivo : string; begin v_caminho := ´C:\´; v_nome_arquivo := ´TESTE´; QRRich.LoadFromFile(caminho do arquivo no HD); QRReport.ExportToFilter(TQRPDFDocumentFilter.Create(v_caminho+v_nome_arquivo+´.PDF´));
Gostei + 0
25/07/2006
Ataidesg
E muito obrigado mesmo assim amigo cabelo.
var v_stream : TStream; v_caminho, v_nome_arquivo : string; begin v_caminho := ´C:\´; v_nome_arquivo := ´TESTE´; v_stream := clientdataset.createblobstream(clientdataset.fieldbyname(´campo blob´), bmread); QRRich.LoadFromStream(v_stream); QRReport.ExportToFilter(TQRPDFDocumentFilter.Create(v_caminho+v_nome_arquivo+´.PDF´));
var v_caminho, v_nome_arquivo : string; begin v_caminho := ´C:\´; v_nome_arquivo := ´TESTE´; QRRich.LoadFromFile(caminho do arquivo no HD); QRReport.ExportToFilter(TQRPDFDocumentFilter.Create(v_caminho+v_nome_arquivo+´.PDF´));
Gostei + 0
26/07/2006
Cabelo
Eu uso .DOC, carrego no report... tenho um logotipo no cabeçalho de todas as folhas... então o que eu fiz.. coloquei uma band de cabeçalho e adicionei os dados lá... o que vc pode fazer, como vc possui imagens, pode ler o .doc e as imagens vc pode adicionar as bands de acordo com sua necessidade... tudo isso em RUN - TIME... se quiser uma exemplo posso te mandar..
tenho um contrato uqe tem a imagem no cabeçalho e tenho um LAUDO que possui muitas fotos e faço exatamente assim... e funciona perfeitamente..
um abraço..
Gostei + 0
26/07/2006
Ataidesg
Fico grato pela sua ajuda.
Gostei + 0
26/07/2006
Cabelo
procedure TfrmCO21011.P_Imprime_Contrato(l_cod_proposta : string); var v_sql : string; v_report : TQuickRep; v_rich : TQRRichText; v_arquivo : boolean; v_label_proposta, v_label_num_proposta, v_label_contrato, v_label_num_contrato, v_label_pagina : TQRLabel; v_num_pagina : TQRSysData; begin v_sql := ´select C_CONTRATO_PROPOSTA, C_COD_PROPOSTA from PO0100 ´+ ´where C_COD_PROPOSTA = ´´´+l_cod_proposta+´´´´; F_Query(QCONTRATO, cdsContrato, v_sql, ´O´); v_sql := ´select C_COD_OBRA from OB0100 where C_COD_PROPOSTA = ´´´+l_cod_proposta+´´´´; F_Query(QOB0100, cdsOB0100, v_sql, ´O´); cdsContratoC_CONTRATO_PROPOSTA.SaveToFile(´C:\´+ StringReplace( cdsOB0100.fieldbyname(´C_COD_OBRA´).AsString, ´/´, ´-´, [rfReplaceAll])+ ´.DOC´); v_report := TQuickRep.Create(self); v_report.DataSet := cdsContrato; v_report.Bands.HasDetail := True; v_report.Bands.HasPageHeader := True; v_report.Bands.HasPageFooter := True; v_report.Bands.PageHeaderBand.Width := 740; v_report.Bands.PageHeaderBand.Height := 49; v_label_proposta := TQRLabel.Create(self); with v_label_proposta do begin Caption := ´Proposta :´; Height := 17; Left := 544; Top := 8; Width := 61; Parent := v_report.Bands.PageHeaderBand; end; v_label_num_proposta := TQRLabel.Create(self); with v_label_num_proposta do begin Caption := cdsContratoC_COD_PROPOSTA.AsString; Height := 17; Left := 616; Top := 8; Width := 95; Parent := v_report.Bands.PageHeaderBand; end; v_label_contrato := TQRLabel.Create(self); with v_label_contrato do begin Caption := ´Contrato :´; Height := 17; Left := 544; Top := 26; Width := 61; Parent := v_report.Bands.PageHeaderBand; end; v_label_num_contrato := TQRLabel.Create(self); with v_label_num_contrato do begin Caption := cdsOB0100.fieldbyname(´C_COD_OBRA´).AsString; Height := 17; Left := 616; Top := 26; Width := 95; Parent := v_report.Bands.PageHeaderBand; end; v_report.Bands.PageFooterBand.Width := 740; v_report.Bands.PageFooterBand.Height := 32; v_label_pagina := TQRLabel.Create(self); with v_label_pagina do begin Caption := ´Página - ´; Height := 17; Left := 319; Top := 8; Width := 53; Parent := v_report.Bands.PageFooterBand; end; v_num_pagina := TQRSysData.Create(self); with v_num_pagina do begin Data := qrsPageNumber; Height := 17; Left := 375; Top := 8; AutoSize := True; Parent := v_report.Bands.PageFooterBand; end; v_report.Bands.DetailBand.Width := 740; v_report.Bands.DetailBand.Height := 897; v_report.Bands.DetailBand.ForceNewPage := True; v_report.ShowProgress := False; v_rich := TQRRichText.Create(Self); v_rich.Parent := v_report.Bands.DetailBand; v_rich.AutoStretch := True; v_rich.Width := 740; v_rich.Height := 897; v_rich.Lines.LoadFromFile(´C:\´+ StringReplace( cdsOB0100.fieldbyname(´C_COD_OBRA´).AsString, ´/´, ´-´, [rfReplaceAll])+ ´.DOC´); v_report.ExportToFilter(TQRPDFDocumentFilter.Create(´C:\´+ StringReplace( cdsOB0100.fieldbyname(´C_COD_OBRA´).AsString, ´/´, ´-´, [rfReplaceAll])+ ´.PDF´)); Application.CreateForm(TfrmCO21014, frmCO21014); frmCO21014.ShowModal; s_caminho := frmCO21014.dtvCaminho.Directory + Trim(frmCO21014.lblNomeArquivo.Caption); frmCO21014.Release; v_arquivo := True; while v_arquivo do begin if ´C:\´+ StringReplace( cdsOB0100.fieldbyname(´C_COD_OBRA´).AsString, ´/´, ´-´, [rfReplaceAll])+ ´.PDF´ = s_caminho then begin MessageDlg(´É necessário selecionar outro caminho para o arquivo .PDF´, mterror, [mbOk], 0); Application.CreateForm(TfrmCO21014, frmCO21014); frmCO21014.ShowModal; s_caminho := frmCO21014.dtvCaminho.Directory; frmCO21014.Release; end else begin v_arquivo := False; end; end; v_rich.Free; v_label_proposta.Free; v_label_num_proposta.Free; v_label_contrato.Free; v_label_num_contrato.Free; v_label_pagina.Free; v_num_pagina.Free; v_report.Free; DeleteFile(´C:\´+ StringReplace( cdsOB0100.fieldbyname(´C_COD_OBRA´).AsString, ´/´, ´-´, [rfReplaceAll])+ ´.DOC´); DeleteFile(´C:\´+ StringReplace( cdsOB0100.fieldbyname(´C_COD_OBRA´).AsString, ´/´, ´-´, [rfReplaceAll])+ ´.PDF´); F_Abre_Aplicativo(s_caminho); end;
Um abraço..
Gostei + 0
26/07/2006
Ataidesg
procedure TfrmCO21011.P_Imprime_Contrato(l_cod_proposta : string); var v_sql : string; v_report : TQuickRep; v_rich : TQRRichText; v_arquivo : boolean; v_label_proposta, v_label_num_proposta, v_label_contrato, v_label_num_contrato, v_label_pagina : TQRLabel; v_num_pagina : TQRSysData; begin v_sql := ´select C_CONTRATO_PROPOSTA, C_COD_PROPOSTA from PO0100 ´+ ´where C_COD_PROPOSTA = ´´´+l_cod_proposta+´´´´; F_Query(QCONTRATO, cdsContrato, v_sql, ´O´); v_sql := ´select C_COD_OBRA from OB0100 where C_COD_PROPOSTA = ´´´+l_cod_proposta+´´´´; F_Query(QOB0100, cdsOB0100, v_sql, ´O´); cdsContratoC_CONTRATO_PROPOSTA.SaveToFile(´C:\´+ StringReplace( cdsOB0100.fieldbyname(´C_COD_OBRA´).AsString, ´/´, ´-´, [rfReplaceAll])+ ´.DOC´); v_report := TQuickRep.Create(self); v_report.DataSet := cdsContrato; v_report.Bands.HasDetail := True; v_report.Bands.HasPageHeader := True; v_report.Bands.HasPageFooter := True; v_report.Bands.PageHeaderBand.Width := 740; v_report.Bands.PageHeaderBand.Height := 49; v_label_proposta := TQRLabel.Create(self); with v_label_proposta do begin Caption := ´Proposta :´; Height := 17; Left := 544; Top := 8; Width := 61; Parent := v_report.Bands.PageHeaderBand; end; v_label_num_proposta := TQRLabel.Create(self); with v_label_num_proposta do begin Caption := cdsContratoC_COD_PROPOSTA.AsString; Height := 17; Left := 616; Top := 8; Width := 95; Parent := v_report.Bands.PageHeaderBand; end; v_label_contrato := TQRLabel.Create(self); with v_label_contrato do begin Caption := ´Contrato :´; Height := 17; Left := 544; Top := 26; Width := 61; Parent := v_report.Bands.PageHeaderBand; end; v_label_num_contrato := TQRLabel.Create(self); with v_label_num_contrato do begin Caption := cdsOB0100.fieldbyname(´C_COD_OBRA´).AsString; Height := 17; Left := 616; Top := 26; Width := 95; Parent := v_report.Bands.PageHeaderBand; end; v_report.Bands.PageFooterBand.Width := 740; v_report.Bands.PageFooterBand.Height := 32; v_label_pagina := TQRLabel.Create(self); with v_label_pagina do begin Caption := ´Página - ´; Height := 17; Left := 319; Top := 8; Width := 53; Parent := v_report.Bands.PageFooterBand; end; v_num_pagina := TQRSysData.Create(self); with v_num_pagina do begin Data := qrsPageNumber; Height := 17; Left := 375; Top := 8; AutoSize := True; Parent := v_report.Bands.PageFooterBand; end; v_report.Bands.DetailBand.Width := 740; v_report.Bands.DetailBand.Height := 897; v_report.Bands.DetailBand.ForceNewPage := True; v_report.ShowProgress := False; v_rich := TQRRichText.Create(Self); v_rich.Parent := v_report.Bands.DetailBand; v_rich.AutoStretch := True; v_rich.Width := 740; v_rich.Height := 897; v_rich.Lines.LoadFromFile(´C:\´+ StringReplace( cdsOB0100.fieldbyname(´C_COD_OBRA´).AsString, ´/´, ´-´, [rfReplaceAll])+ ´.DOC´); v_report.ExportToFilter(TQRPDFDocumentFilter.Create(´C:\´+ StringReplace( cdsOB0100.fieldbyname(´C_COD_OBRA´).AsString, ´/´, ´-´, [rfReplaceAll])+ ´.PDF´)); Application.CreateForm(TfrmCO21014, frmCO21014); frmCO21014.ShowModal; s_caminho := frmCO21014.dtvCaminho.Directory + Trim(frmCO21014.lblNomeArquivo.Caption); frmCO21014.Release; v_arquivo := True; while v_arquivo do begin if ´C:\´+ StringReplace( cdsOB0100.fieldbyname(´C_COD_OBRA´).AsString, ´/´, ´-´, [rfReplaceAll])+ ´.PDF´ = s_caminho then begin MessageDlg(´É necessário selecionar outro caminho para o arquivo .PDF´, mterror, [mbOk], 0); Application.CreateForm(TfrmCO21014, frmCO21014); frmCO21014.ShowModal; s_caminho := frmCO21014.dtvCaminho.Directory; frmCO21014.Release; end else begin v_arquivo := False; end; end; v_rich.Free; v_label_proposta.Free; v_label_num_proposta.Free; v_label_contrato.Free; v_label_num_contrato.Free; v_label_pagina.Free; v_num_pagina.Free; v_report.Free; DeleteFile(´C:\´+ StringReplace( cdsOB0100.fieldbyname(´C_COD_OBRA´).AsString, ´/´, ´-´, [rfReplaceAll])+ ´.DOC´); DeleteFile(´C:\´+ StringReplace( cdsOB0100.fieldbyname(´C_COD_OBRA´).AsString, ´/´, ´-´, [rfReplaceAll])+ ´.PDF´); F_Abre_Aplicativo(s_caminho); end;
Gostei + 0
26/07/2006
Cabelo
se eu puder te ajudar... o farei...
um abraço.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)