2010-01-29 71 views
0

这是我的代码,大大缩短了。如何将图像添加到php创建的MS Word文档中?

<?php 
    session_start(); 
    header("Content-Type: application/msword"); 
    header('Content-Disposition: attachment; filename="Contrat d\'étude.doc"'); 
?> 

    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
    </head> 

    <body> 
     <p align="right">Version: A</p> 
     <img src="img/logoPoly.png" alt="École Polytechnique de Montréal" /> 

     <h1>CONTRAT D'ÉTUDES HORS QUÉBEC</h1> 
     ............ 

我在这里尝试使用常规的img标签添加图像,但一旦用户的计算机上,路径不工作,很明显..所以我怎么能去呢?

而顺便说一句,元标记是设置字符集的好方法吗?或者有更好的方法,也许使用PHP头函数?

感谢您的帮助!

回答

2

您的代码中是否有东西被截断,将所有HTML转换为MS Word文件?

因为......呃......你知道用.doc扩展名保存一个HTML文件实际上并不是一个Word文件,对吗?

如果您有HTML,只需将其作为HTML提供,并且用户可以使用浏览器自己的“使用图像保存网页”功能来保存图像。或者你可以写一个MHTML文件,如果你喜欢的话,包括它里面的图像。

但是HTML-file-hiding-under-DOC-file-extension并不是一个真正有效的格式。这是你不应该依赖的东西,如果Word设法加载/导入的东西;要求它拖入图像,并要求在月球上放一根棍子。

是的,meta是设置字符集的唯一方法,当您提供您希望人们保存的HTML文件时。 Content-Type头文件通常也是一个很好的放置位置,但只要文件保存在不支持保存类型元数据的文件系统(即当前所有流行的文件系统)中,该信息就会丢失。

顺便提一句,像é这样的非ASCII字符在filename头参数中是完全不可靠的。根据浏览器的不同,它们会被视为不同的编码(对于IE,也是区域设置),并且没有标准的转义方式。将非ASCII字符放入下载文件的文件名的唯一可靠方法是将它们作为尾随URL部分,编码为UTF-8。例如:

http://www.example.com/download.php/Contrat%20d%27%C3%A9tude.doc 
+0

嘿,好点。实际上,我的代码中没有任何内容使其成为单词文档。但是,当我把这个页面保存为.doc并且用word打开(实际上是开放式办公室)时,它显示的是预期的(除了该图像和任何css)。我这样做的原因是因为这个页面是一个php填写的表单,需要通过电子邮件作为word文档发送。那么,什么是MTHML呢? – Shawn 2010-01-29 23:42:20

+0

http://en.wikipedia.org/wiki/MHTML - 它就像一个包含HTML和外部资源的存档。我不知道是谁制定了“必须以邮件形式发送为Word文档”的要求,但我怀疑这是他们的意思!真正的.DOC很难创建; .DOCX,.RTF和.PDF可能更合理。 – bobince 2010-01-29 23:44:15

0

在MS WORD上创建您的模板(添加一些图像),并将其另存为doc文件。在记事本++或smth代码编辑器中打开此文件,将所有代码复制到php文件并添加您的php变量。 要添加图像,您需要将图像转换为base64格式。如果您注意到文字文件代码,则添加的图像是一些基于字符的格式。

相关问题