Редактирование .doc в PHP - PullRequest
2 голосов
/ 27 февраля 2012

Я пытаюсь заменить строки в текстовом документе, читая файл в переменную $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?

Ответы [ 6 ]

1 голос
/ 07 ноября 2017

У меня такое же требование для редактирования .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();
}
0 голосов
/ 01 августа 2016

Существует множество способов обработки файла текстовых документов в linux

  1. antiword - не очень эффективно, поскольку он преобразуется в простой текст.
  2. pyODconvert
  3. open-office или liboffice - через утилиту UNO
  4. unoconv - необходимо разрешение на установку на сервере

Существует один сценарий python, который наиболее подходит для онлайн-файлапреобразование, но вам нужно преобразовать этот файл через командную строку.

Не существует конкретного и удовлетворительного решения для обработки файлов слов, используя только код php.

Я долго охотился, чтобы достать это предложение.

0 голосов
/ 06 июля 2012

Если вы можете связаться с веб-сервисом, посмотрите на Docmosis Облачные сервисы, поскольку они могут объединить файл с вашими данными и вернуть вам документ / pdf / other. Вы можете сделать https сообщение в сервис, чтобы сделать запрос, так что это довольно просто из PHP.

0 голосов
/ 28 февраля 2012

Я собираюсь выбрать PHPWord www.phpword.codeplex.com, так как я считаю, что учителя получат Office 2007 в следующем году, а также я постараюсь найти способ конвертировать между .docx и .doc через PHP для поддержкиих тем временем.

0 голосов
/ 27 февраля 2012

Решения, которые я нашел до сих пор (но не проверял):
Docvert - работает для Doc, бесплатно, но не используется напрямую
PHPWordLib - работает для Doc, не бесплатно
PHPDocX - только для DocX, требуется Zend.

0 голосов
/ 27 февраля 2012

Может быть, это укажет вам правильное направление: http://davidwalsh.name/read-pdf-doc-file-php

...