Html to doc with php

PHP: Как сохранить HTML в DOC

При разработке онлайн-проектов часто возникает необходимость сохранить html-страничку в виде документа, который можно использовать отдельно, например, отправить по электронной почте, просматривать и редактировать оффлайн. Удобным способом сохранения html таким образом является экспорт в один из наиболее часто используемых текстовых форматов — doc.

Для экспорта html документа в формат doc можно воспользоваться открытым бесплатным php-модулем «html_to_doc». С его помощью можно сохранить html в документ doc, который будет корректно обработан текстовым редактором MS Word. Если в html-страничке присутствуют изображения, они будут встроены в документ doc.

Скачайте файл ExportToWord.inc.php и включите его в свой проект.

Весь код модуля размещается в одном файле ExportToWord.inc.php. Достаточно разместить его в директории проекта, ничего дополнительно устанавливать не нужно.

В самом файле для корректной работы нужно отредактировать следующие параметры:

  • $imgRef — укажите относительный (от корня проекта) путь к директории, где размещаются изображения, включенные в html-код.
  • $imgDir — укажите полный (абсолютный) путь к той же самой директории с используемыми изображениями.

Использование:

С помощью директивы require или include подключите модуль ExportToWord.inc.php в код своего проекта.

Для сохранения html-кода в документ doc вызовите функцию ExportToWord::htmlToDoc() из подключенного модуля, передав в параметрах собственно html, таблицу стилей css и имя файла с путем, по которому нужно поместить готовый документ doc.

Читайте также:  Css transition easing types

Источник

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

License

Korchy/html_to_doc

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

This php class enables to convert HTML document to DOC format.

Supports embeding images to the destination doc document.

  • Copy ExportToWord.inc.php to some directory of your project.
  • Change $imgRef and $imgDir static variables in the ExportToWord.inc.php file with your project images paths.
  • Use require_once to include ExportToWord class to your project file.
  • Call ExportToWord::htmlToDoc function from your project file to convert HTML to DOC.
require_once(dirname(dirname(__FILE__)).'/ExportToWord.inc.php'); $html = '
Test
'; $css = '.test '; $fileName = 'c:/test.doc'; ExportToWord::htmlToDoc($html, $css, $fileName);

test.php — file with sample code of using HTML — DOC converter

test.html — file with sample html body. The same html body used in the test.php file.

test.doc — converted to DOC html file (with test.html body)

Источник

HTML с картинками в DOC на PHP собственными руками

В статье Не очень честная генерация DOC файлов на PHP был описан описан способ генерации DOC файла при помощи генерации MHT (MIME HTML) используя стороннюю библиотеку. Сегодня я расскажу о своей собственной генерации в этот формат. Плюсы моего способа следующие:

1) В OpenOffice читаемый текст и картинки.
2) В Word открывается файл в электронном виде, а не на весь экран.
3) Наш скрипт будет принимать HTML и отдавать сразу DOC файл на скачивание.

Ко всему прочему, вы поймете как преобразовать голый HTML в MHT собственными руками. Ошибки если и будут, то копаться в коде будет проще.

Начнем с функции, которая отдаст DOC файл на скачивание и будет работать во всех браузерах и со всеми протоколами(у меня с этим были проблемы):

/* Отсылаем файл на закачку */ function send_download($filename, $charset = 'cp1251') < header ($_SERVER["SERVER_PROTOCOL"] . ' 200 OK'); if (ereg('Opera(/| )(3.1)', $_SERVER['HTTP_USER_AGENT'])) $UserBrowser = "Opera"; elseif (ereg('MSIE (8.7)', $_SERVER['HTTP_USER_AGENT'])) $UserBrowser = "IE"; else $UserBrowser = ''; $mime_type = ($UserBrowser == 'IE' || $UserBrowser == 'Opera') ? 'application/octetstream' : 'application/octet-stream'; header("Content-Type: application/msword; charset=".$charset); $ua = (isset($_SERVER['HTTP_USER_AGENT']))?$_SERVER['HTTP_USER_AGENT']:''; $isMSIE = preg_match('@MSIE (5.3)@', $ua); if ($isMSIE) < header('Content-Disposition: attachment; filename="' . $filename . '"'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); >else < header('Content-Disposition: attachment; filename="' . $filename . '"'); header('Pragma: no-cache'); >> 

Теперь перейдем к самой генерации DOC файла, для этого создадим форму, которая будет отправлять нам html с картинками, картинки лежат на нашем сайте.

 

Преобразовывать изображения мы будем при помощи base64, создадим функцию — callback для этого:

/* Преобразование изображений */ function prepareImage($matches) < global $IMAGES, $IMAGE_NAMES, $IMAGE_COUNT,$gldir,$SITE; $imgfile = $_SERVER['DOCUMENT_ROOT'].'/'.$matches[2]; $imgbinary = fread(fopen($imgfile, "r"), filesize($imgfile)); $url = $SITE.$matches[1]; $data = chunk_split(base64_encode($imgbinary)); $IMAGE_COUNT++; $ext = substr($matches[2], strpos($matches[2], '.') + 1, strlen($matches[2])); $imgName = 'images'.$IMAGE_COUNT.'.'.$ext; $IMAGES .= ' --doc_file_part_na_habrahabr Content-Location: '.$gldir.'images/'.$imgName.' Content-Transfer-Encoding: base64 Content-Type: image/'.$ext.' '.$data.' '; $pr1 = $matches[1]; $pr2 = $matches[3]; $IMAGE_NAMES .= ' '; return '3DHaut'; > 

Сразу извиняюсь, за то, что код написан в функциях, а все данные храниться в глобальных переменных. Код был написан, когда я ещё только начинал писать на PHP. Теперь создадим функцию, которая поможет нам с текстом, чтобы он хотя бы читался и в OpenOffice.

/* Преобразование текста */ function xml_entities($text, $charset = 'cp1251')< global $SITE; /* Ищем изображения и добавляем их в файл */ $text = preg_replace_callback( '//', "prepareImage", $text); /* Преобразовываем ссылки относительные на глобальные */ $text = preg_replace('/href="/','href=3D"'.$SITE, $text); /* Все пробелы должны быть закодированы как =3D, 3D - это шестнадцатиричный код пробела */ $text = preg_replace('/=(?=[^3])/','=3D',$text); $text = preg_replace('/\s?=\s?"/','=3D"',$text); /* Кодируем текст, чтобы читался в OpenOffice */ $text = htmlentities($text, null, $charset); $fi = array(""","&","'",""); $re = array('"',"&","'",""); return str_replace($fi, $re, $text); > 
global $SITE; /* Имя сайта, на который будут вести ссылки и с которого нужно будет загрузить изображения */ $SITE = 'http://pihpi.ru'; function htmlToDoc($name, $html, $charset = 'cp1251') < $nameFile = $name.'.doc'; global $IMAGES, $IMAGE_NAMES, $IMAGE_COUNT, $gldir, $SITE; $IMAGE_COUNT = 0; $IMAGE_NAMES = ''; $IMAGES = ''; $gldir = 'file:///C:/AF22D505/'; /* doc_file_part_na_habrahabr - это название части файла может быть любым. Для того, чтобы узнать подробнее, читайте про MIME или как отправить по почте файл с картинками, аналогия очевидна. */ $head = 'MIME-Version: 1.0 Content-Type: multipart/related; boundary="doc_file_part_na_habrahabr" --doc_file_part_na_habrahabr Content-Location: '.$gldir.$nameFile.' Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="windows-1251"        

Оцените статью