third
asked on
convert word doc to image/picture format
hi all,
does anyone knows how to convert a word document into an image format (i.e. bmp/jpg/gif) using delphi? please post working codes if you know how. thanks!
i'll increase the points when necessary.
does anyone knows how to convert a word document into an image format (i.e. bmp/jpg/gif) using delphi? please post working codes if you know how. thanks!
i'll increase the points when necessary.
listening...
Hi Third,
I was thinking in your problem and I found these results:
I dont think its possible to copy to Delphi every picture in a Word document automatically. The problem is the way Word Basic (the last instance command language for MsWord), handles a cut/copy of a picture on a document. Word assigns a name "picture 2", "picture 9" in some random way that I cant figure out how it works. I didnt find the proper generic automated function to use it with OLE.
Nevertheless, if you have lots of pictures in a Word document and want them in BMP format, for example, try this code (tested in Delphi 5):
Put an Image object, a save dialog, and a button.
Then try:
procedure TForm1.Button1Click(Sender : TObject);
begin
if Clipboard.HasFormat(CF_Pic ture) then { is there a bitmap on the Clipboard? }
begin
Image1.Picture.Assign(Clip board);
end;
SaveDialog1.Execute;
if SaveDialog1.FileName <> '' then
Image1.Picture.SaveToFile( SaveDialog 1.FileName );
end;
So I used the next procedure: I executed MsWord and load a document with images. Then, I clicked on right mouse button over an image and cut/copy the image selected in document. Changed the focus to my delphi application and clicked the button to load the image and save it as a bmp file.
Hope this helps.
best regards,
Manuel Lopez (lopem)
I was thinking in your problem and I found these results:
I dont think its possible to copy to Delphi every picture in a Word document automatically. The problem is the way Word Basic (the last instance command language for MsWord), handles a cut/copy of a picture on a document. Word assigns a name "picture 2", "picture 9" in some random way that I cant figure out how it works. I didnt find the proper generic automated function to use it with OLE.
Nevertheless, if you have lots of pictures in a Word document and want them in BMP format, for example, try this code (tested in Delphi 5):
Put an Image object, a save dialog, and a button.
Then try:
procedure TForm1.Button1Click(Sender
begin
if Clipboard.HasFormat(CF_Pic
begin
Image1.Picture.Assign(Clip
end;
SaveDialog1.Execute;
if SaveDialog1.FileName <> '' then
Image1.Picture.SaveToFile(
end;
So I used the next procedure: I executed MsWord and load a document with images. Then, I clicked on right mouse button over an image and cut/copy the image selected in document. Changed the focus to my delphi application and clicked the button to load the image and save it as a bmp file.
Hope this helps.
best regards,
Manuel Lopez (lopem)
Third,
Sorry, I forgot few more details... First, use the clipbrd unit in your uses clauses and second, I didnt read your question carefully. You want to make a document an image, right? well the only way I can think to do that is to click on MsWord preview and copy the content of the display to the clipboard. This way you can make every page of a document a bmp file using the code presented in my last message.
(A better solution is to use Adobe Acrobat Distiller to create a PDF file of the document).
best wishes
Manuel Lopez (lopem)
Sorry, I forgot few more details... First, use the clipbrd unit in your uses clauses and second, I didnt read your question carefully. You want to make a document an image, right? well the only way I can think to do that is to click on MsWord preview and copy the content of the display to the clipboard. This way you can make every page of a document a bmp file using the code presented in my last message.
(A better solution is to use Adobe Acrobat Distiller to create a PDF file of the document).
best wishes
Manuel Lopez (lopem)
ASKER
hi, could you show me working codes on how to convert a word doc to pdf? also, kindly specify what components i need to import to produce one. thanks...
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
I used RXRichEdit from RXLib because it can show pictures.
Save Word document as RTF.
uses ...richedit;
procedure TForm1.Button1Click(Sender : TObject);
var b:tbitmap;
fr: TFormatRange;
r: TRect;
begin
rxrichedit1.Lines.LoadFrom File('e:\w we.rtf');
b:=tbitmap.create;
b.width:=rxrichedit1.width ;
b.height:=rxrichedit1.heig ht;
r:=rect(0,0,RXRichEdit1.Wi dth*screen .Pixelsper inch,
RXRichEdit1.Height*screen. Pixelsperi nch);
fr.hdc:=b.Canvas.handle;
fr.hdctarget:=b.Canvas.han dle;
fr.rc:=r;
fr.rcpage:=r;
fr.chrg.cpMin:=0;
fr.chrg.cpMax:=-1;
Sendmessage(RXRichEdit1.ha ndle,EM_FO RMATRANGE, 1,longint( @fr));
image1.Picture.assign(b);/ /just to control
b.savetofile('e:\wwe.bmp') ;
b.free;
end;
Save Word document as RTF.
uses ...richedit;
procedure TForm1.Button1Click(Sender
var b:tbitmap;
fr: TFormatRange;
r: TRect;
begin
rxrichedit1.Lines.LoadFrom
b:=tbitmap.create;
b.width:=rxrichedit1.width
b.height:=rxrichedit1.heig
r:=rect(0,0,RXRichEdit1.Wi
RXRichEdit1.Height*screen.
fr.hdc:=b.Canvas.handle;
fr.hdctarget:=b.Canvas.han
fr.rc:=r;
fr.rcpage:=r;
fr.chrg.cpMin:=0;
fr.chrg.cpMax:=-1;
Sendmessage(RXRichEdit1.ha
image1.Picture.assign(b);/
b.savetofile('e:\wwe.bmp')
b.free;
end;
ASKER
MBo,
the document need not support pictures (only formatted texts) in the document so i just used richedit on my testing. your code works but it only save what is currently visible in the richedit component. is it possible to do a per page saving?
the document need not support pictures (only formatted texts) in the document so i just used richedit on my testing. your code works but it only save what is currently visible in the richedit component. is it possible to do a per page saving?
To produce a pdf file, you can get the PDF Converter from www.amyuni.com that can do the job without even using components