Преобразование текста в изображение в Microsoft Word - PullRequest
1 голос
/ 17 января 2012

У меня есть большая книга, написанная на Microsoft Word, и я хочу создать макрос, который найдет весь текст с использованием предопределенного стиля и преобразует этот текст во встроенное изображение.Этот текст будет на арабском языке и обычно не длиннее 4-5 строк.Возможно ли это?

ОБНОВЛЕНИЕ: Вот пример, чтобы показать, что я имею в виду:

enter image description here

Я хочу заменить всю эту строку на арабском языке наизображение (как будто я обрезал это прикрепленное изображение, чтобы включить только арабский, а затем заменил строку на арабском языке с изображением).

Причина, по которой я хочу, чтобы макрос или скрипт выполняли это, состоит в том, что существуют сотни таких строк, и их обновление по одной является громоздким, а это усложнит изменения в дальнейшем.

ОБНОВЛЕНИЕ2:Я нашел интересный вариант здесь: http://windowssecrets.com/forums/showthread.php/31344-Convert-Text-to-an-Image-of-Text-in-VBA-(Office-2000-Sr1a)

Похоже, вы можете вырезать кусок текста, а затем "Вставить специальный" в качестве изображения.Так что, если есть способ автоматизировать это, это может сработать.

Ответы [ 3 ]

1 голос
/ 18 января 2012

Это не ответ, хотя я надеюсь, что он превратится в ответ сообщества. На данный момент это исследование того, что требуется для решения проблемы.

Из обсуждения, когда этот вопрос был опубликован на Super User, я знаю, что Абдулла хочет опубликовать свою книгу о Kindle. Таким образом, вопрос заключается в том, как подготовить документ на английском и арабском языках для публикации в виде электронной книги.

Kindle не поддерживает арабский язык. Количество поддерживаемых языков постепенно увеличивается, но я не могу найти никаких доказательств того, что Amazon планирует добавить арабский в обозримом будущем.

Формат электронной книги Amazon - это урезанная версия HTML. Если документ Word, содержащий арабские буквы, экспортируется в HTML, арабские буквы включаются как символьные объекты; например: «ﭐ & # amp; 64337; ﭓ ﭓ ”. Импорт исходного Word или HTML-версии в Kindle приводит к тому, что ведущие биты отбрасываются, поэтому эти символы отображаются как P, Q, R и S вместо «ﭐ ﭑ ﭒ form» (изолированная форма Alef Wasla, окончательная форма Alef Wasla, Beeh Wasla выделенная форма и Beeh Wasla окончательная форма).

Я испробовал идею Абдуллы о сохранении некоторых арабских букв в PNG-файле и создании HTML-файла, содержащего <p> … </p> <img src= “Arabic.png” > <p> … </p>. Внешний вид этого файла на моем Kindle 2 вполне приемлем, так что это может стать решением проблемы. Вопрос в том, как выполнить необходимые преобразования?

Нам нужно извлечь каждую арабскую строку из документа Word или его HTML-эквивалента и импортировать в программу, которая может конвертировать их в файлы PNG.

Единственный известный мне способ автоматизации - копировать каждую строку в слайд в PowerPoint. С помощью опции PowerAs SaveAs можно сохранить каждый слайд в виде отдельного файла PNG. Слайды называются: SLIDE1.PNG, SLIDE2.PNG, SLIDE3.PNG и так далее по порядку, что позволит макросу связать результаты с исходными строками. Тогда можно будет заменить арабские строки в файле HTML на элементы изображения. Ничто из этого не будет слишком сложным для автоматизации, но есть проблема с тем, что все слайды имеют размер страницы PowerPoint. Страница может быть уменьшена, но нам нужно, чтобы каждый слайд был обрезан до размера, превышающего текст этого слайда. Я не могу придумать способа автоматизировать эту обрезку.

У кого-нибудь есть лучший подход, чем преобразование каждой арабской фразы в файл PNG?

Я искал редакторы PNG с некоторым интерфейсом командной строки, но не могу найти ничего, что было бы проще, чем использование PowerPoint. Кто-нибудь знает альтернативу PowerPoint?

У кого-нибудь есть предложения по автоматизации обрезки каждого изображения? Когда строка помещается в слайд PowerPoint, можно установить ее ширину, скажем, 6,5 см (что хорошо выглядит на моем Kindle) и получить высоту, определенную PowerPoint. Это можно сохранить для дальнейшего использования, если кто-нибудь знает, как его использовать.

Реализующее решение

В ожидании каких-либо предложений по улучшению подхода, описанного выше, ниже описывается, как я бы его реализовал.

Я бы не пытался обрабатывать документ Word. Я хотел бы сохранить его в виде Web Page, Filtered HTML-файла, который является обязательным шагом на пути к созданию электронной книги Kindle, и обработать его.

В файле HTML, созданном из моего тестового документа, арабская фраза выглядит так:

<p class="MsoNormal"></p>
<p class="MsoNormal" align="center" style="text-align:center"><span dir="RTL"
style="font-size:24.0pt;font-family:Arial">
&amp;#64336;&amp;#64337;&amp;#64338;&amp;#64339;&amp;#64340;&amp;#64341;
&amp;#64342;&amp;#64343;&amp;#65153;&amp;#65154;&amp;#65276;&amp;#65275;
&amp;#65274;&amp;#65273;&amp;#65246;&amp;#65226;&amp;#65227;&amp;#65228;
</span><span style="font-size:24.0pt"></span></p>
<p class="MsoNormal"></p>
<p class="MsoNormal"></p>

Я предполагаю, что документ Абдуллы приведет к чему-то похожему. Примечание 1: выше приведен случайный набор арабских букв. Примечание 2: они хранятся слева направо в последовательности чтения, хотя при отображении или распечатке они читаются справа налево.

Весь этот блок должен быть заменен чем-то вроде:

<br><imc src="xxxx.png"><br>

где файл xxxx.png содержит изображение арабского текста.

ФиИмена файлов, такие как xxxx.png, могут быть систематическими (A001.png, A002.png, ...), но я бы подумал, что транслитерация первых десяти или двадцати символов фразы с арабского на английский алфавиты и использованиерезультат с числовым суффиксом, так как имя файла будет более удобным.

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

Я предполагаю следующие шаги в процессе преобразования:

  1. Макрос VBA для извлечения арабских строк из последнего HTML-файла и добавления новыхстроки на лист Excel.(Подробнее о рабочей таблице Excel позже.) * Макрос VBA
  2. для создания файла PowerPoint, с одним слайдом на новую строку и использованием SaveAs в формате PNG для создания одного файла PNG на слайд перед удалением файла PowerPoint.
  3. Человек, чтобы обрезать каждый файл PNG.(Как представляется, нет способа автоматизировать обрезку, поэтому эта задача будет сведена к минимуму путем использования данных на листе Excel.)
  4. Макрос VBA для переименования каждого слайда из SLIDEnnn.PNG в его постоянное имя и записипостоянное имя в листе Excel.
  5. Макрос VBA для обновления последнего HTML-файла путем замены блока, содержащего арабскую фразу, соответствующим HTML-элементом IMG.

Требуется лист Excelдве колонки: арабская фраза и имя файла PNG.Если есть риск, что лист будет отсортирован между шагами 2 и 4, нам также может понадобиться порядковый номер.

Макрос 1 извлечет арабскую фразу из файла HTML, просмотрите список на листедля этой фразы и добавьте фразу внизу, если она еще не существует.

Macro 2 будет искать фразы на листе, которые не имеют имени файла PNG.Эти новые фразы должны быть записаны в презентации PowerPoint.То есть фраза входит в этот процесс только один раз.

Задача 3, обрезка каждого PNG-файла, будет проблемой.Все, что я могу сказать, это то, что это будет только один раз для каждой фразы.

Макрос 4 будет предполагать, что SLIDE001.PNG, SLIDE002.PNG,… находятся в последовательности фраз без файлов PNG на листе.Если это может быть неверно (поскольку лист был отсортирован), нам понадобится либо порядковый номер, либо для сохранения файла PowerPoint.Макрос назначит уникальное имя каждой новой фразе, запишет это имя на листе и переименует файл PNG.

Макрос 5 создает новую копию самого последнего файла HTML, используя содержимое листа, чтобы определить, какойФраза для замены на какой файл PNG.

Этот процесс не идеален, но он приведет к желаемому результату и не имеет очевидных осложнений.Есть предложения по улучшению?

1 голос
/ 17 января 2012

Перед тем, как приступить к выполнению этих инструкций, нажмите запись в редакторе макросов Microsoft Word, чтобы увидеть код VBA.

Мне интересно, будет ли это проще, если вы конвертируете файл docx в .rtf (формат расширенного текста) и замените эту строку изображением? Перейдите в «Файл»> «Сохранить как ...» и назовите его «old.rtf», затем замените строку изображением и снова «Сохранить как…», назовите его «new.rtf», а затем загрузите Beyond Compare или вашу любимую программу сравнения, чтобы увидеть что случилось. Это должно быть легко сделать программно, если вы захотите. Я думаю, что работать с текстом будет проще, чем двоичный формат Microsoft, если вы не найдете хорошую библиотеку для изменения их форматов doc или docx.

0 голосов
/ 14 февраля 2015
Sub CopySelPasteAsPicture()
' Take a picture of a selection and paste it at the
' document end
    With Selection
        .CopyAsPicture
    End With
    ActiveDocument.Content.Select
    With Selection
        .Collapse Direction:=wdCollapseEnd
        .TypeParagraph
        .TypeParagraph
        .PasteSpecial DataType:=wdPasteMetafilePicture
    End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...