www.webdeveloper.com
Results 1 to 4 of 4

Thread: HTML to DOC ?

Hybrid View

  1. #1
    Join Date
    Feb 2006
    Posts
    156

    HTML to DOC ?

    I found this script online that uses php to change an html file into an MS Document. But for some reason, it isn't working for me. Does anybody know why it wouldn't?

    Here is the source code:
    Example.php
    PHP Code:
    <?php
        
    include("doc.inc.php");
        
        
    $htmltodoc= new HTML_TO_DOC();
        
        
    //$htmltodoc->createDoc("reference1.html","test");
        
    $htmltodoc->createDocFromURL("http://www.google.com","test");
        

    ?>
    doc.inc.php
    PHP Code:
    <?php
        
    /**
         * Convert HTML to MS Word file
         * @author Harish Chauhan
         * @version 1.0.0
         * @name HTML_TO_DOC
         */
        
        
    class HTML_TO_DOC
        
    {
            var 
    $docFile="";
            var 
    $title="";
            var 
    $htmlHead="";
            var 
    $htmlBody="";
            
            
            
    /**
             * Constructor
             *
             * @return void
             */
            
    function HTML_TO_DOC()
            {
                
    $this->title="Untitled Document";
                
    $this->htmlHead="";
                
    $this->htmlBody="";
            }
            
            
    /**
             * Set the document file name
             *
             * @param String $docfile 
             */
            
            
    function setDocFileName($docfile)
            {
                
    $this->docFile=$docfile;
                if(!
    preg_match("/\.doc$/i",$this->docFile))
                    
    $this->docFile.=".doc";
                return;        
            }
            
            function 
    setTitle($title)
            {
                
    $this->title=$title;
            }
            
            
    /**
             * Return header of MS Doc
             *
             * @return String
             */
            
    function getHeader()
            {
                
    $return  = <<<EOH
                 <html xmlns:v="urn:schemas-microsoft-com:vml"
                xmlns:o="urn:schemas-microsoft-com:office:office"
                xmlns:w="urn:schemas-microsoft-com:office:word"
                xmlns="http://www.w3.org/TR/REC-html40">
                
                <head>
                <meta http-equiv=Content-Type content="text/html; charset=utf-8">
                <meta name=ProgId content=Word.Document>
                <meta name=Generator content="Microsoft Word 9">
                <meta name=Originator content="Microsoft Word 9">
                <!--[if !mso]>
                <style>
                v\:* {behavior:url(#default#VML);}
                o\:* {behavior:url(#default#VML);}
                w\:* {behavior:url(#default#VML);}
                .shape {behavior:url(#default#VML);}
                </style>
                <![endif]-->
                <title>
    $this->title</title>
                <!--[if gte mso 9]><xml>
                 <w:WordDocument>
                  <w:View>Print</w:View>
                  <w:DoNotHyphenateCaps/>
                  <w:PunctuationKerning/>
                  <w:DrawingGridHorizontalSpacing>9.35 pt</w:DrawingGridHorizontalSpacing>
                  <w:DrawingGridVerticalSpacing>9.35 pt</w:DrawingGridVerticalSpacing>
                 </w:WordDocument>
                </xml><![endif]-->
                <style>
                <!--
                 /* Font Definitions */
                @font-face
                    {font-family:Verdana;
                    panose-1:2 11 6 4 3 5 4 4 2 4;
                    mso-font-charset:0;
                    mso-generic-font-family:swiss;
                    mso-font-pitch:variable;
                    mso-font-signature:536871559 0 0 0 415 0;}
                 /* Style Definitions */
                p.MsoNormal, li.MsoNormal, div.MsoNormal
                    {mso-style-parent:"";
                    margin:0in;
                    margin-bottom:.0001pt;
                    mso-pagination:widow-orphan;
                    font-size:7.5pt;
                        mso-bidi-font-size:8.0pt;
                    font-family:"Verdana";
                    mso-fareast-font-family:"Verdana";}
                p.small
                    {mso-style-parent:"";
                    margin:0in;
                    margin-bottom:.0001pt;
                    mso-pagination:widow-orphan;
                    font-size:1.0pt;
                        mso-bidi-font-size:1.0pt;
                    font-family:"Verdana";
                    mso-fareast-font-family:"Verdana";}
                @page Section1
                    {size:8.5in 11.0in;
                    margin:1.0in 1.25in 1.0in 1.25in;
                    mso-header-margin:.5in;
                    mso-footer-margin:.5in;
                    mso-paper-source:0;}
                div.Section1
                    {page:Section1;}
                -->
                </style>
                <!--[if gte mso 9]><xml>
                 <o:shapedefaults v:ext="edit" spidmax="1032">
                  <o:colormenu v:ext="edit" strokecolor="none"/>
                 </o:shapedefaults></xml><![endif]--><!--[if gte mso 9]><xml>
                 <o:shapelayout v:ext="edit">
                  <o:idmap v:ext="edit" data="1"/>
                 </o:shapelayout></xml><![endif]-->
                 
    $this->htmlHead
                </head>
                <body>
    EOH;
            return 
    $return;
            }
            
            
    /**
             * Return Document footer
             *
             * @return String
             */
            
    function getFotter()
            {
                return 
    "</body></html>";
            }
            
            
    /**
             * Create The MS Word Document from given HTML
             *
             * @param String $html :: URL Name like http://www.example.com
             * @param String $file :: Document File Name
             * @param Boolean $download :: Wheather to download the file or save the file
             * @return boolean 
             */
            
            
    function createDocFromURL($url,$file,$download=false)
            {
                if(!
    preg_match("/^http:/",$url))
                    
    $url="http://".$url;
                
    $html=@file_get_contents($url);
                return 
    $this->createDoc($html,$file,$download);    
            }

            
    /**
             * Create The MS Word Document from given HTML
             *
             * @param String $html :: HTML Content or HTML File Name like path/to/html/file.html
             * @param String $file :: Document File Name
             * @param Boolean $download :: Wheather to download the file or save the file
             * @return boolean 
             */
            
            
    function createDoc($html,$file,$download=false)
            {
                if(
    is_file($html))
                    
    $html=@file_get_contents($html);
                
                
    $this->_parseHtml($html);
                
    $this->setDocFileName($file);
                
    $doc=$this->getHeader();
                
    $doc.=$this->htmlBody;
                
    $doc.=$this->getFotter();
                                
                if(
    $download)
                {
                    @
    header("Cache-Control: ");// leave blank to avoid IE errors
                    
    @header("Pragma: ");// leave blank to avoid IE errors
                    
    @header("Content-type: application/octet-stream");
                    @
    header("Content-Disposition: attachment; filename=\"$this->docFile\"");
                    echo 
    $doc;
                    return 
    true;
                }
                else 
                {
                    return 
    $this->write_file($this->docFile,$doc);
                }
            }
            
            
    /**
             * Parse the html and remove <head></head> part if present into html
             *
             * @param String $html
             * @return void
             * @access Private
             */
            
            
    function _parseHtml($html)
            {
                
    $html=preg_replace("/<!DOCTYPE((.|\n)*?)>/ims","",$html);
                
    $html=preg_replace("/<script((.|\n)*?)>((.|\n)*?)<\/script>/ims","",$html);
                
    preg_match("/<head>((.|\n)*?)<\/head>/ims",$html,$matches);
                
    $head=$matches[1];
                
    preg_match("/<title>((.|\n)*?)<\/title>/ims",$head,$matches);
                
    $this->title $matches[1];
                
    $html=preg_replace("/<head>((.|\n)*?)<\/head>/ims","",$html);
                
    $head=preg_replace("/<title>((.|\n)*?)<\/title>/ims","",$head);
                
    $head=preg_replace("/<\/?head>/ims","",$head);
                
    $html=preg_replace("/<\/?body((.|\n)*?)>/ims","",$html);
                
    $this->htmlHead=$head;
                
    $this->htmlBody=$html;
                return;
            }
            
            
    /**
             * Write the content int file
             *
             * @param String $file :: File name to be save
             * @param String $content :: Content to be write
             * @param [Optional] String $mode :: Write Mode
             * @return void
             * @access boolean True on success else false
             */
            
            
    function write_file($file,$content,$mode="w")
            {
                
    $fp=@fopen($file,$mode);
                if(!
    is_resource($fp))
                    return 
    false;
                
    fwrite($fp,$content);
                
    fclose($fp);
                return 
    true;
            }

        }

    ?>
    Thanks in advance!

  2. #2
    Join Date
    Feb 2006
    Posts
    156
    Okay, so I got it to work, but my next question is, how would i make it accept and download images as well? Like at the bottom, I have it put in a signature. It would be fine if it points to an image on the web..but either way, it must show that image.

  3. #3
    Join Date
    Oct 2008
    Posts
    1
    Oh my goodness, very late answer, but maybe someone else can use it.

    Just use an absolut path when you want to show pictures with HTML_TO_DOC!

  4. #4
    Join Date
    Nov 2012
    Posts
    1

    Html to docs

    please help me for the html to docs conversion. the above code is not working for me.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center



Recent Articles