2015-05-30 2 views
7

Я сохраняю части существующего документа Microsoft Word как HTML и динамически вставляя этот HTML-код в панели, чтобы дать инструкции пользователям.Заменить части строк HTML в нескольких документах

Это прекрасно работает, за исключением изображений, которые не отображаются. Проверка HTML, генерируемый я вижу, что HTML, чтобы отобразить изображение является

<img src="home_files/image001.png" />

В Visual Studio страницы справки HTML хранятся в папке под названием Помощь, поэтому я изменил эту линию, чтобы включать помощь папка

<img src="help/home_files/image001.png" />

с этим изменить изображение отображается правильно.


Я должен генерировать более 50 страниц справки из текстовых документов, так что не вручную нужно изменить все места изображений, особенно при наличии изменений некоторых страницы будут восстановлены.

Есть ли способ для правильного отображения изображений без редактирования грязных документов, сверенных Word?

Или есть лучший способ генерации HTML-версий текстовых документов?

я не использовал, как не Всякий браузер PDF-документ будет отображать PDF в встроенной в вебе-страницу

+0

Ник, вы хотите просто изменить в alredy сгенерированные файлы .html до , запустив скрипт php? Сгенерированные файлы .html хранятся в одной папке? Может быть, вы можете показать нам одну из них? Или два. –

+0

Это редактировалось в вопрос, на который я не хочу знать ответ! –

ответ

4

Есть ли способ для изображения, которые будут корректно отображаться без редактирования запутанных документов gererated Словом?

Я думаю, вы могли бы просто запустить некоторые простые стороне клиента код, чтобы изменить атрибут этих <img> тегов src. Вы бы получить что-то вроде

var imgs = document.querySelector("container").querySelectorAll("img"); 
for(var i=0;i<imgs.length;i++){ 
    var oldSrc = imgs[i].getAttribute(); 
    imgs[i].setAttribute("src", "help/"+oldSrc); 
} 

То же самое, конечно, может быть сделано в любой реализации на стороне сервера DOM, не отметить, что они могут не хватает функций, описанных в фрагменте выше, и может, таким образом, требует перезаписи.

Или есть лучший способ генерации HTML-версий текстовых документов?

Если честно, это довольно плохая идея вообще (или, по крайней мере, это было в прошлом). Слово не предназначено для такого рода вещей, поэтому вы можете столкнуться с множеством проблем. Несколько лет назад я работал в компании, где у них был специальный инструмент, который просто очищал содержимое HTML, скопированное из Word, и хотя я никогда не занимался этим, я помню, что код довольно сложный, поэтому я не удивлюсь, если вы сталкиваются с неожиданными проблемами. Гораздо логичнее, чтобы контент был написан в редакторе, который предназначен для Интернета в первую очередь. Даже копирование, вставляемое в редактор, предназначенный для Интернета, может творить чудеса (если редактор довольно строгий).

+0

@ humble.rumble Ну, я не могу ручаться за реализацию, все, что я знаю, это то, что много вещей, которые неправильно в реализации DOM на стороне сервера. HTML в конце концов - довольно причудливый язык. –

+0

@ humble.rumble Просто с беглого взгляда ему уже не хватает 'querySelector', который в одиночку является самой полезной функцией DOM. Но да, не следует слишком сильно переписывать его с помощью 'getElementsByTagName'. В любом случае, это больше того, что я помню из кода, который работал с выходом html Word, что у него были некоторые действительно странные конструкции, чтобы позаботиться о некоторых странных вещах, которые выводил Word. Возможно, это артефакты с просроченной эры, но это может быть актуально. –

1
<?php 
function processFiles($root) 
{ 
    $root = rtrim($root, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR; 
    if($hDir = opendir($root)) 
    { 
     while(false !== $filename = readdir($hDir)) 
     { 
      if($filename == '.' || $filename == '..') 
       continue; 

      $file = $root . $filename; 
      if(is_dir($file)) 
       call_user_func(__FUNCTION__, $file); 
      elseif(pathinfo($file, PATHINFO_EXTENSION) == 'html') 
      { 
       $old = file_get_contents($file); 
       $new = str_replace('home_files/', 'help/home_files/', $old); 
       file_put_contents($file, $new); 
      } 
     } 
     closedir($hDir); 
    } 
} 

processFiles('folder/with/html-files/'); 

Это будет обрабатывать все ваши * .html файлы и делать str_replace() на них, чтобы исправить неправильный путь.

1

Как о чем-то вроде этого:

foreach (glob("path/to/files/*.doc") as $filename) 
{ 
$file = file_get_contents($filename); 
file_put_contents($filename, preg_replace("home_files/","help/home_files/",$file)); 
} 
0

Добавьте этот код в .htaccess и вам не нужно будет что-то делать с Docs :)

RewriteEngine on 
RewriteRule ^home_files/([^\.]+\.(png|jpg))$ /help/home_files/$1 [L] 

Примечание: Чтобы точно будет написать необходимо знать структуру папок

0

Или есть лучший способ генерировать HT ML версии текстовых документов?

Если местоположение единственная проблема, вы также можете просто перемещать изображения в окне консоли с помощью простого

move home_files/*.* help/home_files 

Вы также можете поместить эту команду в пакетный файл и доступ к нему из рабочего стола, меню «Пуск» или даже назначить его макросу Word.

0

Из того, что я читал, вы не ищете код, а просто решение ваших одноразовых проблем с конверсией.

Это изменение на самом деле очень просто. Делайте поиск и замену в файлах. Загрузите Notepad++, установите, запустите, нажмите Ctrl-F и перейдите на вкладку «Найти файлы». В поле «Найти что» введите «"home_files/», в поле «Заменить на» введите «"help/home_files/». Вы можете установить «Фильтры» на «*.*» и выбрать папку, в которой хранятся ваши html-файлы. Нажмите «Заменить в файлах» и «вуаля», все ваши файлы будут изменены. Не требуется кодирование.

Обратите внимание, что добавив в запрос цитату ("), вы можете повторно запустить ее, и она не будет разорвать файлы, которые уже были исправлены.

0

Почему бы просто не изменить базовый путь ваших документов с помощью метки <base>?

Это простое изменение (просто добавление одного тега в каждый заголовок).

Анализ всего документа для замены всех подходящих путей намного дороже и подвержен ошибкам.

0

Также вы можете сделать это, используя Adobe Dreamweaver. выберите свою папку и замените все. enter image description here

Смежные вопросы