Блог об использовании Linux на десктопах и ноутбуках в России.

Делаем правильные русские PDF с помощью свободного софта: OO Writer, AbiWord, KOffice KWord, Scribus, PDFLaTeX + cmap

Обновление: попробовал KWord (мощно) и Scribus (так себе).

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

  • не работает поиск русских слов при просмотре документа;
  • нельзя скопировать текст через буфер обмена;
  • люди с ослабленным зрением не смогут использовать программы чтения текста;
  • быстро не посмотреть содержимое присланного документа в виде HTML при чтении почты в GMail;
  • русский текст в документе не индексируется поисковыми машинами в Сети.

Последний пункт наиболее важен при публикации документов в Сети: такой PDF сложно будет найти в Google.

Одним из преимуществ OpenOffice Writer перед MS Office Word является встроенная возможность экспорта в PDF. Причем Writer из OpenOffice 2 сохраняет русский правильно. Однако один и тот же шрифт по непонятной причине полностью внедряется в документ 2 раза и PDF-файл получается большой. Нет никаких опций экспорта в PDF.

Легковесный свободный текстовый процессор AbiWord версии 2.4 сохраняет русский в PDF некорректно. Кроме того, PDF-файл получается в 2,5 раза больше, чем при сохранении в OO Writer.

Программа вёрстки документов KWord из пакета KOffice под KDE (только для Linux) также умеет сохранять в PDF, выполняется через печать, отлично сохраняет русский. Имеет множество опций экспорта в PDF. Опция частичного внедрения шрифтов позволяет сохранять в PDF только используемую в документе часть шрифта. PDF-файлы получаются очень компактными — от 2Кб! Даже с полностью внедрённым шрифтом размер файла получается в 3 раза меньше чем у ОО Writer. KWord однозначно лучшая из рассмотренных программа для создания PDF. Уникальной особенностью KWord является возможность импортировать PDF-файлы для редактирования.

Scribus является свободным аналогом профессиональных программ для верстки PageMaker и Quark Express. По количеству опций экспорта в PDF превосходит KWord. Однако попытка вычесть неиспользуемые в документе символы из шрифтов не увенчалась успехом: шрифт не внедрился вообще и буквы сохранились в кривых. При полном внедрении шрифта в PDF их попадает целых 3 штуки, хотя в документе используется 1, размер файла сопоставим с OO Writer. Однако при копировании текста из PDF видим странную штуку: кодировка русского нормальная, но символы разряжены пробелами то там то сям. Видимо, пробелы используются для более точного позиционирования символов. Может это и важно для профессиональной подготовки документа в печать, но совершенно не годится для публикации в Сети или пересылки по email.

Подготовленные по шаблонам TeX документы выглядят очень красиво и профессионально с минимумом усилий на вёрстку за счёт разделения стиля и содержимого. Используется масса шрифтов и PDF-файл получается большим. Вопрос на $100. Единственный способ делать правильные PDF в TeX, который мне удалось освоить, заключается в использовании пакета cmap. А это автоматически означает что для создания PDF можно использовать только PDFLaTeX, но не dvitopdf. Это, в свою очередь, означает невозможность использования векторных рисунков в формате eps напрямую. Я нашел следующее решение...

Блог: RU Linux

Tcl + Tile = молниеносное создание кроссплатформных GUI с нативными виджетами

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

По работе мне близко последнее. Чтобы не править и не перекомпилировать программу управления устройством каждый раз, когда добавляется новый параметр, мы написали универсальный конфигуратор, который по XML-файлу с описанием параметров устройства строит виджеты работы с ними. Специфичные для конкретного устройства функции вынесены в библиотеки. В последнее время этого стало мало -- нужно уметь задавать зависимости между значениями, введёнными пользователем в одни виджеты, и внешним видом других. Можно конечно продолжать наворачивать XML-схему и код её интерпретации. Другой вариант -- использовать интерпретируемый язык для создания пользовательского интерфейса.

Первое, что приходит в голову: использовать возможности браузеров. Однако ограничения безопасности не позволят через JavaScript работать напрямую с файлами, сокетами, портами. Непонятно как рисовать графики. Для всего этого придется делать какие-то плагины к браузеру. Математику, физику или радиолюбителю точно не захочется с этим связываться. Можно использовать Python + PyGTK, но есть более изящный, легковесный и простой в освоении инструмент специально для упомянутых задач. Это Tcl (Tool control language).

Вместе с расширением Tk для создания GUI, этот кроссплатформный интерпретируемый язык позволяет создавать GUI со скоростью мысли.

Блог: RU Linux

Регулярные выражения на досуге

Вот сделал страницу, где буду собирать рабочие примеры регулярных выражений и шаблонов для KWrite, PHP, Apache mod_rewritе и т.д., ссылки на статьи по регулярным выражениям. Комментируйте или изменяйте страницу если захочется поделиться своими регулярками.

Регулярное выражение -- это строка специального формата, задающая шаблон текста. В веб-программировании регулярные выражения незаменимы при проверке правильности формата введённых пользователем данных. Для продвинутого Linux-пользователя регулярные выражения расширяют возможности поиска и замены в текстовых редакторах KWrite, Kate и GEdit.

Например, я решил заказать по почте на CD-диске кучу файлов с помощью замечательного сервиса, подсказанного мне одним из посетителей сайта. Для этого после регистрации необходимо ввести в поле список адресов скачиваемых файлов. В моём случае файлов более 500 и их адреса необходимо извлечь из текста HTML-страницы и переделать относительные адреса в абсолютные.

Блог: RU Linux

Дело Поносова и Linux в школах

Анти-PR Microsoft всхолыхнул таки народные массы. В блоге Владимира Иванова прозвучал подкреплённый личным примером призыв бесплатно помочь учителям информатики в школах в освоении Linux. Желающих последовать его примеру нашлось много. Обсуждается возможность создания сообщества вокруг этой идеи. Я добавил в профиль пользователя на этом сайте поле, которое могут заполнить желающие помогать учителям. Отображается оно списке Делимся свободным софтом и в профиле пользователя. Буду рад любым пожеланиям и предложениям по развитию идеи.

Блог: RU Linux

Мигрируем с Microsoft Access и Microsoft SQL Server на MySQL

Для организаций сделать переход на свободный софт безболезненным может постепенное замещение используемых коммерческих программ их свободными кроссплатформными аналогами под Windows. После привыкания к свободному софту под Windows при переходе на Linux культурный шок будет минимальным. Начать можно например с СУБД т.к. ее мало кто видит :) Для поддержки MySQL в программе, работающей с Access или Microsoft SQL Server, необходимо учесть следующее...

Блог: RU Linux

Монтирование папок в Linux, кроссплатформное переносное рабочее место на USB-флэшке

При использовании нескольких операционных систем или переходе с одной на другую хочется использовать одни и те же настройки для общих приложений. Например иметь один и те же параметры, закладки и кэш в Opera под Linux и Windows. Порой удобнее не прописывать никаких путей и не делать симлинков в каждой ОС, а воспользоваться возможностью Linux монтировать одни папки поверх других. Для этого под рутом используется команда mount --bind olddir newdir. При этом старое содержимое папки скрывается.

Блог: RU Linux

Снижение скорости вращения привода CD-ROM при чтении CD или DVD под Linux

Чтоб не шумело при просмотре фильмов делаю под рутом так:
hdparm -E8 /dev/cdrom
На некоторых приводах со временем диск все же разгоняется и приходится выполнять команду периодически.

Блог: RU Linux
RSS-материал