Это не ответ, хотя я надеюсь, что он превратится в ответ сообщества. На данный момент это исследование того, что требуется для решения проблемы.
Из обсуждения, когда этот вопрос был опубликован на 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">
&#64336;&#64337;&#64338;&#64339;&#64340;&#64341;
&#64342;&#64343;&#65153;&#65154;&#65276;&#65275;
&#65274;&#65273;&#65246;&#65226;&#65227;&#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 в ту же рабочую книгу.
Я предполагаю следующие шаги в процессе преобразования:
- Макрос VBA для извлечения арабских строк из последнего HTML-файла и добавления новыхстроки на лист Excel.(Подробнее о рабочей таблице Excel позже.) * Макрос VBA
- для создания файла PowerPoint, с одним слайдом на новую строку и использованием
SaveAs
в формате PNG для создания одного файла PNG на слайд перед удалением файла PowerPoint. - Человек, чтобы обрезать каждый файл PNG.(Как представляется, нет способа автоматизировать обрезку, поэтому эта задача будет сведена к минимуму путем использования данных на листе Excel.)
- Макрос VBA для переименования каждого слайда из SLIDEnnn.PNG в его постоянное имя и записипостоянное имя в листе Excel.
- Макрос 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.
Этот процесс не идеален, но он приведет к желаемому результату и не имеет очевидных осложнений.Есть предложения по улучшению?