Редактирование .doc в PHP
Вопрос
Я пытаюсь заменить строки в документе Word, прочитав файл в переменную. $content
а затем с помощью str_ireplace() изменить строку.Я могу прочитать содержимое файла, но str_ireplace(), похоже, не может заменить строку.Я предполагал, что это так, потому что строка «двоично безопасна» согласно документации PHP.Извините, я новичок в манипуляциях с файлами PHP, поэтому все это для меня совершенно ново.
Это то, что я написал.
copy('jack.doc' , 'newFile.doc');
$handle = fopen('newFile.doc','rb');
$content = '';
while (!feof($handle))
{
$content .= fread($handle, 1);
}
fclose($handle);
$handle = fopen('newFile.doc','wb');
$content = str_ireplace('USING_ICT_BOX', 'YOUR ICT CONTENT', $content);
fwrite($handle, $content);
fclose($handle);
Когда я загружаю новый файл, он открывается в MS Word как следует, но показывает старую строку, а не ту, которую следует заменить.
Могу ли я исправить эту проблему?Есть ли лучший инструмент, который я могу использовать для замены строк в MS Word через PHP?
Решение 4
Я собираюсь выбрать PHPWord www.phpword.codeplex.com, так как считаю, что учителя получат Office 2007 в следующем году, а также я постараюсь найти способ конвертировать файлы .docx и .doc через PHP, чтобы поддержать их в среднее время.
Другие советы
У меня такое же требование для редактирования .doc или .docx файл, используя php, и я нашел для него решение.И я написал об этом пост :: http://www.onlinecode.org/update-docx-file-using-php/
copy('jack.doc' , 'newFile.doc');
$full_path = 'newFile.doc';
if($zip_val->open($full_path) == true)
{
// In the Open XML Wordprocessing format content is stored.
// In the document.xml file located in the word directory.
$key_file_name = 'word/document.xml';
$message = $zip_val->getFromName($key_file_name);
$timestamp = date('d-M-Y H:i:s');
// this data Replace the placeholders with actual values
$message = str_replace("client_full_name", "onlinecode org", $message);
$message = str_replace("client_email_address", "ingo@onlinecode.org", $message);
$message = str_replace("date_today", $timestamp, $message);
$message = str_replace("client_website", "www.onlinecode.org", $message);
$message = str_replace("client_mobile_number", "+1999999999", $message);
//Replace the content with the new content created above.
$zip_val->addFromString($key_file_name, $message);
$zip_val->close();
}
Возможно, это укажет вам правильное направление: http://davidwalsh.name/read-pdf-doc-file-php
Решения, которые я нашел до сих пор (хотя и не тестировал):
Докверт - работает для Doc, бесплатно, но не может использоваться напрямую
PHPWordLib - работает для Дока, не бесплатно
PHPDocX - Только DocX, нужен Zend.
Если вы можете получить доступ к веб-сервису, посмотрите Докмосис Облачные сервисы, поскольку они могут объединить файл документа с вашими данными по почте и вернуть вам документ/pdf/другой.Вы можете отправить сообщение в службу по протоколу https, чтобы сделать запрос, так что это довольно просто из PHP.
Существует много способов обработки файла документа Word в Linux.
antiword
- не очень эффективно, поскольку преобразуется в обычный текст.pyODconvert
open-office
илиliboffice
- через ООНunoconv
утилита - необходимо разрешение на установку на сервере
Существует один скрипт Python, который наиболее удобен для онлайн-конвертации файлов, но вам необходимо конвертировать этот файл через командную строку.
Не существует конкретного и удовлетворительного решения для обработки файлов Word с использованием только кода PHP.
Я долго искал этого предложения.