Generally, there are two ways to export doc documents. One is to use com and install it on the server as an extension library of php, and then create a com, calling its method. A server with office installed can call a com called word.application to generate a word document. However, I do not recommend this method because the execution efficiency is relatively low (I tested it and found that when executing the code, the server will actually Open a word client). The ideal com should have no interface and perform data conversion in the background, so the effect will be better, but these extensions generally require charges.
The second method is to use PHP to export the content of the Word document and write it directly into a file with the suffix doc. Using this method does not require relying on third-party extensions, and the execution efficiency is higher.
Word itself is still very powerful. It can open files in html format and retain the format. Even if the suffix is doc, it can still open it normally. This provides us with convenience. But there is a problem. The pictures in the HTML format file have only one address, and the real pictures are saved elsewhere. That is to say, if the HTML format is written into the doc, the doc will not be able to contain the pictures. So how do we create a doc document containing pictures? We can use the mht format which is very close to html.
The mht format is very similar to html, except that in the mht format, externally linked files, such as images, Javascript, and CSS, will be encoded and stored in base64. Therefore, a single mht file can save all the resources in a web page. Of course, its size will be larger than that of html.
Can the mht format be recognized by word? I saved a web page as mht, then changed the suffix to doc, and then opened it with word. OK, word can also recognize mht files and can display pictures.
Okay, now that doc can recognize mht, the next step is to consider how to put pictures into mht. Since the address of the image in the html code is written in the src attribute of the img tag, you can get the image address by extracting the src attribute value in the html code. Of course, it is possible that what you get is a relative path. It doesn't matter. Just add the prefix of the URL and change it to an absolute path. With the image address, we can get the specific content of the image file through the file_get_content function, then call the base64_encode function to encode the file content into base64 encoding, and finally insert it into the appropriate location of the mht file.
Finally, we have two methods of exporting Word documents from PHP to send the file to the client. One is to first generate a doc document on the server side, and then record the address of the doc document. Finally, through the header ("location:xx.doc"); allows the client to download this doc. Another method is to directly send an html request, modify the header part of the HTML protocol, set its content-type to application/doc, set content-disposition to attachment, followed by the file name. After sending the html protocol, directly The file content is sent to the client, and the client can also be downloaded to the doc document.