Solved

convert word doc to image/picture format

Posted on 2002-06-28
8
786 Views
Last Modified: 2010-04-04
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.
0
Comment
Question by:third
8 Comments
 
LVL 3

Expert Comment

by:lopem
ID: 7116667
listening...
0
 
LVL 3

Expert Comment

by:lopem
ID: 7117440
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_Picture) then     { is there a bitmap on the Clipboard? }
 begin
   Image1.Picture.Assign(Clipboard);
 end;
  SaveDialog1.Execute;
  if SaveDialog1.FileName <> '' then
   Image1.Picture.SaveToFile(SaveDialog1.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)
0
 
LVL 3

Expert Comment

by:lopem
ID: 7117455
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)
0
Active Directory Webinar

We all know we need to protect and secure our privileges, but where to start? Join Experts Exchange and ManageEngine on Tuesday, April 11, 2017 10:00 AM PDT to learn how to track and secure privileged users in Active Directory.

 
LVL 30

Author Comment

by:third
ID: 7121037

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...
0
 
LVL 3

Accepted Solution

by:
lopem earned 150 total points
ID: 7122426
Converting a document to PDF is not an easy task. You need at least a component or Adobe Distiller to do that. Distiller software is expensive (I guess around 500 dlls)...  Anyway, I dont think you can find any free component to such that task but take a look to these sites:

http://www.synactis.com/products/pdf_delphi.htm

 
                 Nishita's PDF Creation VCL v.2.0  
                 PowerPdf v.0.9 beta  
                 PasPDF v.0.943  

at    http://www.torry.net/index.htm

or a commercial one: http://www.wptools.de/html/wpdf.htm

best regards.
Manuel Lopez (lopem)
0
 
LVL 1

Expert Comment

by:MBo
ID: 7123710
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.LoadFromFile('e:\wwe.rtf');
b:=tbitmap.create;
b.width:=rxrichedit1.width;
b.height:=rxrichedit1.height;
r:=rect(0,0,RXRichEdit1.Width*screen.Pixelsperinch,
                    RXRichEdit1.Height*screen.Pixelsperinch);
fr.hdc:=b.Canvas.handle;
fr.hdctarget:=b.Canvas.handle;
fr.rc:=r;
fr.rcpage:=r;
fr.chrg.cpMin:=0;
fr.chrg.cpMax:=-1;
Sendmessage(RXRichEdit1.handle,EM_FORMATRANGE,1,longint(@fr));
image1.Picture.assign(b);//just to control
b.savetofile('e:\wwe.bmp');
b.free;
end;
0
 
LVL 30

Author Comment

by:third
ID: 7139680
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?
0
 

Expert Comment

by:hrabih75
ID: 7540706
To produce a pdf file, you can get the PDF Converter from www.amyuni.com that can do the job without even using components
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

This article explains how to create forms/units independent of other forms/units object names in a delphi project. Have you ever created a form for user input in a Delphi project and then had the need to have that same form in a other Delphi proj…
In my programming career I have only very rarely run into situations where operator overloading would be of any use in my work.  Normally those situations involved math with either overly large numbers (hundreds of thousands of digits or accuracy re…
I've attached the XLSM Excel spreadsheet I used in the video and also text files containing the macros used below. https://filedb.experts-exchange.com/incoming/2017/03_w12/1151775/Permutations.txt https://filedb.experts-exchange.com/incoming/201…

828 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question