Como converter um .DOC para .PDF
Ola pessoal, ja baixei uma série de componentes na NET e nenhum resolvel o meu problema, encontrei Drivers virtuais, OCXs, e DLLs e componentes, e nada, o que eu realmente quero é pegar um arquivo do Word que foi criada pela minha aplicação um .DOC normal e converter para o formato PDF.
Alguem pode me indicar um componente ao qualquer coisa pra resolver isso.
Desde agradecço a qualquer ajuda.
Alguem pode me indicar um componente ao qualquer coisa pra resolver isso.
Desde agradecço a qualquer ajuda.
Ataidesg
Curtidas 0
Respostas
Cabelo
23/07/2006
Colega...
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
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
Ataidesg
23/07/2006
Colega...
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
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
Cabelo
23/07/2006
Colega...
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.
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
Ataidesg
23/07/2006
Colega...
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.
Ok, caro colega Cabelo, eu vou tentar fazer a mesma coisa, e te falo se deu certo, muito grato pela dica.
GOSTEI 0
Ataidesg
23/07/2006
Não estou conseguindo aqui o que eu faço com o Strem exatamente, não entendi .
Colega...
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
Cabelo
23/07/2006
Bom vamos lá...
Para realizar esta procedure o clientdataset deve estar ponteirado no resgistro que vc deseja tranformar em PDF...
Um arquivo gravado no BD como Blob.
se vc deseja procurar um arquivo no HD..
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
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
Ataidesg
23/07/2006
Agora sim amigo deu pra entender bem, vou testar e te falo, valeu mesmo pela mão.
Bom vamos lá...
Para realizar esta procedure o clientdataset deve estar ponteirado no resgistro que vc deseja tranformar em PDF...
Um arquivo gravado no BD como Blob.
se vc deseja procurar um arquivo no HD..
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
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
Ataidesg
23/07/2006
Opa fala amigo vim so pra comunicar que infelizmente a solução não funcionou, na verdade infelizmente não atendeu, tenho um contrato um arquivo .DOC que tem imagem, e convertendo para .RTF a imagem não vem, e dando um load direto no .DOC não funciona, somente como RTF, sendo assim infelizmente voltei a estaca zero, se algum puder ajudar agradeço.
E muito obrigado mesmo assim amigo cabelo.
E muito obrigado mesmo assim amigo cabelo.
Bom vamos lá...
Para realizar esta procedure o clientdataset deve estar ponteirado no resgistro que vc deseja tranformar em PDF...
Um arquivo gravado no BD como Blob.
se vc deseja procurar um arquivo no HD..
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
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
Cabelo
23/07/2006
Colega..
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..
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
Ataidesg
23/07/2006
Eu agradeceria bastante se pudesse citar aqui o exemplo caro amigo, e por gentileza quanto ao carregar o .DOC eu não entendi pois estou usando um QRRichText para dar o Load do arquivo que se encontra no HD e ele me carrega caracteres estranhos ao invés do contúdo do arquivo do Word, será que foi assim mesmo que você fez pra carregar o seu .DOC ? se sim qual versão do QuickReport esta usando.
Fico grato pela sua ajuda.
Fico grato pela sua ajuda.
Colega..
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
Cabelo
23/07/2006
Bom... segue abaixo o código de um dos meus contratos..
Um abraço..
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
Ataidesg
23/07/2006
Grato por sua prestatividade.
Bom... segue abaixo o código de um dos meus contratos..
Um abraço..
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
Cabelo
23/07/2006
Sempre que precisar... pode contar..
se eu puder te ajudar... o farei...
um abraço.
se eu puder te ajudar... o farei...
um abraço.
GOSTEI 0