Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
DikBSD Зрелый участник форума
Зарегистрирован: 14.11.2007 Сообщения: 108 Откуда: Рязань
|
Добавлено: Ср Ноя 12, 2008 14:23 Заголовок сообщения: |
|
|
Есть несколько вариантов. что можно сделать:
I. Надо установить и сделать исполняемым файл .OOoFBTools-mef.sh.
Подробнее прочитай в справке в разделе 2.4.1. Для Linux и других Unix-подобных систем. Только для Мака домашняя папка будет не /home, а Users (ну, ты это и так знаешь ).
II. Если это уже сделано и файл исполняемый, а блока <binary> в fb2-файле так и не оказывается, то сделай следующее (а о результате сообщи мне):
1. В редакторе кода найди по поиску в модуле Parser плдпрограмму Sub CodeToBase64( sGraphicUrl As String, ByVal sExt As String ). В ней в самом низу есть условие If GetOS() = 0 Then ' для Windows-системы. Поставь сюда точку останова и посмотри, идет ли выполнение макроса в ветку Else ' для Unix-систем.
Если да, то пошагово дойди до строки If FileExists( sMimeFile ) Then и посмотри: выполняется ли это условие и есть ли в папке /tmp/ooofbtools-tmp файл image.sh, файл base64image_1.txt номер на конце зависит от номера картинки). Этот файл содержит закодированную в base64 картинку. Что в этом файле, если он есть? Несколько байт, пустой или полный base64-код? Если этих файлов нет, то дальнейшие шаги бессмысленны. Напиши мне результат - буду делать тэст.
Если же эти файлы есть и "нормальные". то:
2. В модуле ExportToFB21 поставь точку останова для подпрограммы Sub ExportToFB21 на строке:
' печатаем коды картинок, если они есть
Dim iSI As Integer
If UBound(Images()) <> -1 Then
Сделай шаг выполнения макроса. Выполняется ли условие? (В инспекторе объектов можно посмотреть на Images - если он пуст - то беда, если в нем число записей = числу картинок - то хорошо). Если это условие выполнилось - Images - не пуст, то значит "беда" где-то в функции Function SaveImages() As Integer модуля Body.
Сделай, пожалуйста, пока это, а я пока еще подумаю...
Напиши результат... |
|
Вернуться к началу |
|
|
PaulTheTortoise Новенький участник форума
Зарегистрирован: 27.10.2008 Сообщения: 16
|
Добавлено: Ср Ноя 12, 2008 15:08 Заголовок сообщения: |
|
|
Хорошо, я сегодня все это проверю. |
|
Вернуться к началу |
|
|
Ulenspiegel Новенький участник форума
Зарегистрирован: 20.09.2006 Сообщения: 7 Откуда: Москва
|
Добавлено: Ср Ноя 12, 2008 16:17 Заголовок сообщения: OOoFBTools-1.1.4.1 |
|
|
OOoFBTools-1.1.4.1, FC7, OpenOffice 2.4.2
При попытке экспорта FB2 ошибка:
BASIC runtime error. Object variable not set
в функции GetGraphicType.
Код: | ' картинки лежат внутри конвертируемого файла (odt, doc, rtf...)
If bIsTextGraphic Then
>>> sExt = Mid( oContent.Graphic.MimeType, InStr( oContent.Graphic.MimeType, "/" )+1, Len(oContent.Graphic.MimeType) ) <<<
Else ' для формул и диаграм
sExt = sOLEAs |
В поле oContent.Graphic - ссылка на com....Graphic
oContent.Graphic.MimeType = "image/x-vclgraphic"
Выходил, загружал, дверью хлопал, колесо пинал. Ошибка устойчивая.
Файл, на котором это происходит -
http://www.onlinedisk.ru/file/33019/
Картинка - "Table 1-4"
И - дурацкое предложение. Как я заметил, проблемы возникают у OpenOffice в момент экспорта embedd картинки в файл. При формировании книг картинки у многих (в смысле, у меня) и без того лежат в отдельных файлах, да и OOffice их в любом случае хранит в виде файлов внутри zip-архива. Не имеет ли смысл в случае, когда ссылка на картинку представляет из себя валидный URL, этап генерации файла картинки пропускать ? |
|
Вернуться к началу |
|
|
DikBSD Зрелый участник форума
Зарегистрирован: 14.11.2007 Сообщения: 108 Откуда: Рязань
|
Добавлено: Ср Ноя 12, 2008 20:24 Заголовок сообщения: |
|
|
Я посмотрю...
Ulenspiegel писал(а): | При формировании книг картинки у многих (в смысле, у меня) и без того лежат в отдельных файлах, да и OOffice их в любом случае хранит в виде файлов внутри zip-архива. Не имеет ли смысл в случае, когда ссылка на картинку представляет из себя валидный URL, этап генерации файла картинки пропускать ? |
Первоначально я так и планировал - хотел "вытягивать" картинки по их "прямым" URL - (так сделал для html, топом закомментировал код - код остался). Для других форматов файлов, скажу честно - пока не знаю, КАК "вычленить" путь к картинке. Из oContent.Graphic.MimeType сожно узнать имя и тип картинки, но КАК узнать ее полный путь для odt и т.д.? Как "залезть" внутрь файла-архива? Я пробовал разархивацию файла - такая заваруха получается - нет единого алгоритма для разных форматов...
В общем, я пока думаю над более улучшенным алгоритмом "доступа" к картинке - в следующем релизе, возможно, будет новый алгоритм, который ЛИБО "достанет" картинку, либо просто ее пропутит....
Если есть какие-нибудт идеи - буду очекнь рад за помощь (как я уже писал ранее - мой "родной" язык - С++. На Опен Бэйсик пересесть нужда в кросплатформенном конверторе для OOo заставила).
Спасибо за все замечания и идеи...
Добавлено спустя 19 минут 42 секунды:
Посмотрел твой файл. В нем (внутри) в папке Pictures оежат только 3 картинки таблиц. В самом файле картинок довольно много, но начиная как раз с 4-й и далее они не отображаются. т.к. их внутри файла нет. Такая ситуация возникает, когда вставляешь картинки, например, из Галереи не как копию, а как ссылку - картинки действительно лежат где-то на диске, в самом файле их нет.
Конвертор вылетает как раз на этой 4-й кртинке, которой нет внутри файла-архива iptables_manual_1.2.2.odt.
Признаюсь, об этой ситуации я не думал.
Есть вариант в этой ситуации - все картинки вставлять, как копию, а не как ссылку. Тогда экспорт будет работать для всех картинок.
Завтра займусь координальным пересмотром алгоритма экспорта картинок. более универсального.
Cпасибо за сообщение. |
|
Вернуться к началу |
|
|
PaulTheTortoise Новенький участник форума
Зарегистрирован: 27.10.2008 Сообщения: 16
|
Добавлено: Чт Ноя 13, 2008 3:04 Заголовок сообщения: |
|
|
Итак, после проведения расследования, что я могу сообщить. Все работает хорошо вот до этого места, где запускается скрипт - /tmp/ooofbtools-tmp/image.sh Там мы имеем:
Код: | #!/bin/sh
base64 "/tmp/ooofbtools-tmp/OOoFBToolsImage.png" >> /tmp/ooofbtools-tmp/base64image16.txt |
Ну или, что-то вроде. Но вот беда, в Mac OS X нет base64 и дядька Джобс ничего не предлагает нам взамен. Практически трагедия. Но оказвается чудесный инструментарий OpenSSL приходит нам на помощь. То есть в каждой системе Mac OS X установлен OpenSSL. Вот он-то нам и поможет. Если выполнить вот такую команду:
Код: | openssl base64 -in /private/tmp/ooofbtools-tmp/OOoFBToolsImage.jpeg -out /private/tmp/ooofbtools-tmp/OOoFBToolsImage.base64 |
То на выходе мы получим файл закодированный base64. А дальше уже надо как-то это дело запихать в image.sh, если система Mac OS X. |
|
Вернуться к началу |
|
|
Ulenspiegel Новенький участник форума
Зарегистрирован: 20.09.2006 Сообщения: 7 Откуда: Москва
|
Добавлено: Чт Ноя 13, 2008 9:06 Заголовок сообщения: |
|
|
DikBSD писал(а): |
Первоначально я так и планировал - хотел "вытягивать" картинки по их "прямым" URL - (так сделал для html, топом закомментировал код - код остался). Для других форматов файлов, скажу честно - пока не знаю, КАК "вычленить" путь к картинке. Из oContent.Graphic.MimeType сожно узнать имя и тип
|
Когда разбирался с storeGraphic() - наткнулся в и-нете на OOffice-расширение odt2pml. Там в подрограмме sbExtractWriterGraphics именно такой подход - через использование файловой структуры.(http://www.onlinedisk.ru/file/33336/)
DikBSD писал(а): |
Если есть какие-нибудт идеи - буду очекнь рад за помощь (как я уже писал ранее - мой "родной" язык - С++. На Опен Бэйсик пересесть нужда в кросплатформенном конверторе для OOo заставила).
|
Есссно! Сейчас занимаюсь комплиментарной задачей - конверсия fb2 в ODT, С++. Такое ощущение, что чес использовать OpenOffice SDK- проще самому отпарсить XML - код.
DikBSD писал(а): |
Посмотрел твой файл. В нем (внутри) в папке Pictures оежат только 3 картинки таблиц.
|
Гроссе сенькс! |
|
Вернуться к началу |
|
|
DikBSD Зрелый участник форума
Зарегистрирован: 14.11.2007 Сообщения: 108 Откуда: Рязань
|
Добавлено: Пт Ноя 14, 2008 18:58 Заголовок сообщения: |
|
|
PaulTheTortoise писал(а): | Код:
openssl base64 -in /private/tmp/ooofbtools-tmp/OOoFBToolsImage.jpeg -out /private/tmp/ooofbtools-tmp/OOoFBToolsImage.base64
То на выходе мы получим файл закодированный base64. А дальше уже надо как-то это дело запихать в image.sh, если система Mac OS X. |
Я изменю код, а ты потестируй на Маке, пожалуйста...
Ulenspiegel писал(а): | DikBSD писал(а):
Посмотрел твой файл. В нем (внутри) в папке Pictures оежат только 3 картинки таблиц.
Гроссе сенькс! |
Я сначала не внимательно сначала прочел твое сообщение. Не так понял. Потом вник. И твоя &quot;безумная идея&quot; оказалась гениальной. Понимаешь. у меня уже &quot;штопор&quot; в голове стоял. Я ведь делил в алгоритме файлы на 2 вида с картинками - html с ссылками на них и файлы с внедренными в них картинками. А ведь есть не html, где картинки присутствуют тоже как ссылки, а сами - где-то на диске. Так что это тебе огромное спасибо - сдвинул меня в нужное направление. Теперь все чудесно работает. Кстати. чтвой файл у меня теперь замечательно сконвертировался на новой версии конвертора (скоро выложу), и он помог мне увидеть еще одну &quot;беду&quot; с конвертацией сложных таблиц - в ячейку которой внедрена другая (у тебя в файле есть такая с картинкой внутри). Конвертор падал. Исправил (см. справку в новой версии...)
Ulenspiegel писал(а): | Сейчас занимаюсь комплиментарной задачей - конверсия fb2 в ODT, С++. Такое ощущение, что чес использовать OpenOffice SDK- проще самому отпарсить XML - код. |
Вот и я про это же . Кстати, я измучился с парсингом XML штатными средствами Ooo.org - ну не берет он русские файлы в windows-1251, и все тут. Люди, близкие к разработке (если не ошибаюсь) посоветовали парсить на Питоне, чем на OOo. Это я к сведению. С другой стороны, ИМХО, работать с &quot;внутренностью&quot; (объектами...) OOo.org одно мучение - нет постоянных объектов, в разным условиях один и тот же объект может оказаться то таблицей, то нумерованным списком (пишу упрозенно). На защиты и проверки уходит основная масса времени и кода... Ну да ладно...
Ulenspiegel писал(а): | Когда разбирался с storeGraphic() - наткнулся в и-нете на OOffice-расширение odt2pml. Там в подрограмме sbExtractWriterGraphics именно такой подход - через использование файловой структуры.(http://www.onlinedisk.ru/file/33336/) |
Спасибо, Надо будет посмотреть.
На днях выдожу новый пакет - переделан экспорт графики (работает экспорт и внедренных в текст картинок, и ссылок на них) и многое другое...
Добавлено спустя 1 минуту 25 секунд:
Ulenspiegel писал(а): | Сейчас занимаюсь комплиментарной задачей - конверсия fb2 в ODT, С++. |
Кстати, обрати внимание на Qt - это просто праздник какой-то!
Добавлено спустя 48 минут 10 секунд:
PaulTheTortoise писал(а): | То есть в каждой системе Mac OS X установлен OpenSSL. Вот он-то нам и поможет. Если выполнить вот такую команду:
Код:
openssl base64 -in /private/tmp/ooofbtools-tmp/OOoFBToolsImage.jpeg -out /private/tmp/ooofbtools-tmp/OOoFBToolsImage.base64 |
Я, к сожалению, не знаю файловую систему Мака, думал раньше, как на Линуксе, а видно - чем-то отличается.
Подскажи (это будет влиять на тот код, что я внедрю в конвертор): Временная папка на Маке /tmp или /private/tmp? Будет ли команда , которую ты написал, работать, если вместо /private/tmp/ooofbtools-tmp/OOoFBToolsImage.jpeg и т.д. будет /tmp/ooofbtools-tmp/OOoFBToolsImage.jpeg и т.д.? Или OpenSSL жестко работает с временной папков в /private?
Спасибо. |
|
Вернуться к началу |
|
|
PaulTheTortoise Новенький участник форума
Зарегистрирован: 27.10.2008 Сообщения: 16
|
Добавлено: Пт Ноя 14, 2008 21:40 Заголовок сообщения: |
|
|
Там для совместимости есть симлинк tmp -> /private/tmp поэтому проблем не будет.
Нет openssl будет брать файл оттуда куда указвает ключ -in, а записывать вывод туда куда указывает ключ -out. Будет работать в каталогах доступных для общей записи пользователя от которого выполняется.
На сколько я знаю структура каталогов Mac OS X должна быть сходной со структурой каталогов Free BSD, однако как минимум есть отличия в каталоге пользователей, может еще в чем. |
|
Вернуться к началу |
|
|
Ulenspiegel Новенький участник форума
Зарегистрирован: 20.09.2006 Сообщения: 7 Откуда: Москва
|
Добавлено: Сб Ноя 15, 2008 17:56 Заголовок сообщения: |
|
|
DikBSD писал(а): |
Вот и я про это же . Кстати, я измучился с парсингом XML штатными средствами Ooo.org - ну не берет он русские файлы в windows-1251, и все тут.
|
Libxml2 - наше всё! Тем более собственно конвертору (в отличие от fb2-корректора и прочих интерактивностей достаточно командной строки. А GCC есть везде
DikBSD писал(а): |
На днях выдожу новый пакет - переделан экспорт графики (работает экспорт и внедренных в текст картинок, и ссылок на них) и многое другое...
|
Иессс! Родина тщательно ждет новую версию! |
|
Вернуться к началу |
|
|
DikBSD Зрелый участник форума
Зарегистрирован: 14.11.2007 Сообщения: 108 Откуда: Рязань
|
Добавлено: Пн Ноя 17, 2008 12:07 Заголовок сообщения: |
|
|
Для пользователей Windows Ooo.org версии 3.0:
В 3-й версии для Винды есть один неприятный баг. После загрузки в OOo.org расширения (я это отследил по удалению и новой загрузке OOoFBTools), и перезагрузке редактора, чтобы появились панели и меню расширения - видишь следующее: расширение стоит, панели и меню есть, а самих макросов НЕТ! Зайдя в "Управление макросами" тоже видишь, что твоего расширения НЕТ.
Спасает полная перезагрузка компьютера. Тогда "появляются" и макросы, и расширение в "Управление макросами".
Выложил новую версию пакета OOoFBTools-1.1.5: http://dikbsdsda.mylivepage.ru/file/1578/4779_OOoFBTools-1.1.5.zip
1. Переделал алгоритм обработки Графики. Теперь конвертор экспортирует помимо Формул и Диаграмм еще и Картинки 2-х видов: "внедренные" в документ, и вставленные в документ, как ссылки, т.е. сами Картинки лежат где-нибудь в папке на диске (например html-файл и т.д.).
2. Исправил серьезную ошибку в обработке таблиц. В некоторых случаях в ячейке может быть другая таблица (часто это встречается в html-файлах или в файла, созданных на основе этих html-файлов). На таких ячейках конвертор "падал". С другой стороны, не все сложные таблицы конвертор может экспортировать (см. справку). Поэтому, встречая такие ячейки, конвертор экспортирует ее данные ДО таблицы в ней. Эту встроенную в ячейку таблицу конвертор игнорирует. Это лучше, чем падение конвертора и не получение fb2-файла.
3. Внесены изменения в тэстовый файл ExportToFB21_Test-1.odt для иллюстрации того, что сложные таблицы с таблицей в их ячейке экспортируются без этой самой вставленной в ячейку таблицы.
4. Внесены изменения в парсер таблиц. Раньше было: в некоторых случаях таблицы экспортировались в порядке их вставки в документ. Например, 1-я таблица вставлена в начало документа, 2-я - в конец, 3-я - в середину. В результате в fb2-файле таблицы могли идти по-порядку: 1, 2, 3, а не как ожидалось: 1, 3, 2. Чтобы добиться правильного следования таблиц в fb2-файле нужно было последовательно вставлять их в документ. А это не всегда удобно при корректуре и доработке документов.
Теперь, после изменения алгоритма парсера таблицы можно вставлять в документ в любом порядке, и именно в порядке их следования они и будут экспортированы, как и ожидается.
5. Переделана обработка Маркерных и Нумерованных Списков. По мере развития OOo.org многие объекты, их методы и свойства меняются, удаляются или расширяются. Это приводит к тому, что на более новых версиях OOo.org конвертор может не работать или работать некорректно. Так получилось с Нумерованными Списками в новой версии Ooo.org 3.
Переделал всю обработку таких списков - более универсальный алгоритм. Теперь экспорт Маркерных и Нумерованных Списков будет работать на всех версиях OOo.org.
6. Сделан экспорт для Маркеров-Картинок. Теперь у Маркера картинка не заменяется символом •, а экспортируется именно картинка.
7. Доделан экспорт Нумерованных и Маркерных Списков (и Маркеров-Картинок) для ячеек Таблиц.
8. Внесены изменения в тэстовый файл ExportToFB21_Test-2.odt - Маркеры и Нумерованные списки.
9. Изменения в справке... В разделе 2.4. Установка дополнительных платформозависящих пакетов и приложений добавил раздел 2.4.2. Для системы Mac Os X и дополнения в других разделах.
Для пользователей Mac Os X:
10. Сделан экспорт Графики: Формулы, Диаграммы, Внедренные в Текст Картинкии ссылки на Картинки в тексте (Опять, теоритически, должно работать, проверьте на Маке...).
P.S. Напишите, сработал ли экспорт картинок на Маке? |
|
Вернуться к началу |
|
|
PaulTheTortoise Новенький участник форума
Зарегистрирован: 27.10.2008 Сообщения: 16
|
Добавлено: Пн Ноя 17, 2008 20:43 Заголовок сообщения: |
|
|
Попробовал, теперь макрос вылетает вот на такой строке:
Код: | Shell( &amp;quot;&amp;quot;&amp;quot;&amp;quot; &amp;amp; getOOoFBToolsTempPath() &amp;amp; &amp;quot;/.image.sh&amp;quot;&amp;quot;&amp;quot;, 1, &amp;quot;&amp;quot;, true ) |
Говорит File not found.
Пока не проверял, но мне почему-то кажется, что ошибка в функции getOOoFBToolsTempPath().
Добавлено спустя 2 часа 2 минуты 29 секунд:
Причем сам файл по пути /tmp/ooofbtools-tmp/image.sh создается.
Добавлено спустя 35 минут 52 секунды:
Если сам скрипт выполнить из командой строки удачно формируется файл. Не могу понять в чем дело. Я для отладки вставил перед строкой с ошибкой вот такой код:
Код: | ' конвертируем картинку в base64
MsgBox "" & getOOoFBToolsTempPath() & "/image.sh" |
Выводится совершенно нормальный путь к скрипту. Значит в функции getOOoFBToolsTempPath() ошибки нет.
Добавлено спустя 11 минут 31 секунду:
Оказалось в sScript для MacOS X не хватало вот этой части:
Код: | "#!/bin/sh" & chr(10) & |
Соотвественно когда выполнялся скрипт чем его обрабатывать не указвалось, ну а дальше ничего не работало. Так, что все работает, ура!!! |
|
Вернуться к началу |
|
|
Ulenspiegel Новенький участник форума
Зарегистрирован: 20.09.2006 Сообщения: 7 Откуда: Москва
|
Добавлено: Вт Ноя 18, 2008 7:59 Заголовок сообщения: OOoFBTools-1.1.5 |
|
|
Fedora 9, OOffice 2.4.1. Работает на ура - и экспорт вложенной графики, и экспорт внешних картинок. Спасибо большущее!
То, что я перестал видеть в дистрибутиве .OOoFBTools-mef.sh, надеюсь, проблемы моего слишком умного гнома ? |
|
Вернуться к началу |
|
|
PaulTheTortoise Новенький участник форума
Зарегистрирован: 27.10.2008 Сообщения: 16
|
Добавлено: Вт Ноя 18, 2008 10:47 Заголовок сообщения: |
|
|
Осталось разобраться с экспортом картинок из таблиц. Вроде все как символ вставлены, а почему-то картинки утеряны. |
|
Вернуться к началу |
|
|
Kravejs Новенький участник форума
Зарегистрирован: 02.03.2008 Сообщения: 75 Откуда: Latvia
|
|
Вернуться к началу |
|
|
DikBSD Зрелый участник форума
Зарегистрирован: 14.11.2007 Сообщения: 108 Откуда: Рязань
|
Добавлено: Вт Ноя 18, 2008 21:31 Заголовок сообщения: |
|
|
PaulTheTortoise писал(а): | Оказалось в sScript для MacOS X не хватало вот этой части:
Код:
&quot;#!/bin/sh&quot; &amp; chr(10) &amp;
Соотвественно когда выполнялся скрипт чем его обрабатывать не указвалось, ну а дальше ничего не работало. Так, что все работает, ура!!! |
Это моя невнимательность - спешил поскорее сделать и забыл вставить строку. В следующем пакете будет. Спасибо тебе за тестирование и помощь!
Ulenspiegel писал(а): | То, что я перестал видеть в дистрибутиве .OOoFBTools-mef.sh, надеюсь, проблемы моего слишком умного гнома ? |
Файл .OOoFBTools-mef.sh - скрытый (точка спереди). По-умолчанию в гноме скрытые файлы не показываются. В настройках можно включить их показ. Но я специально сделал его скрытым, чтобы случайно не удалить. А так - поставил - и забыл, и все работает.
PaulTheTortoise писал(а): | Осталось разобраться с экспортом картинок из таблиц. Вроде все как символ вставлены, а почему-то картинки утеряны. |
Сложно сказать, что там. Не можешь дать ссылку на файл - погоняю...
Егор, спасибо и тебе за помощь с Google!
Добавлено спустя 2 минуты 9 секунд:
Завтра подправлю скрипт для Мака и выложу на сайт исправленный пакет...
Добавлено спустя 16 часов 5 минут 34 секунды:
Выложил исправленный пакет OOoFBTools-1.1.5.1 : http://dikbsdsda.mylivepage.ru/file/1798/4789_OOoFBTools-1.1.5.1.zip
1. Подправил экспорт Графики для Mac OS X. |
|
Вернуться к началу |
|
|
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
Powered by phpBB © 2001, 2005 phpBB Group
|