![]() ![]() ![]()
Какой рейтинг вас больше интересует?
|
Главная /
Каталог блоговCтраница блогера Жизнь на свободе/Записи в блоге |
![]() |
Жизнь на свободе
Голосов: 1 Адрес блога: http://sovety.blogspot.com/ Добавлен: 2008-02-19 12:40:29 блограйдером Lurk |
Впечатления о Цюрихаке
2010-03-22 18:20:00 (читать в оригинале)Вчера вернулся с Цюрихака. Интересная была поездка. Программировать в компании 80 других фанатов очень даже занятно. Здорово, что можно прямо тут же что-то обсудить, наметить цели, поделить работу и её сделать. Приятно браться за незнакомый код и в сжатый срок добавлять к нему что-то полезное (а с Хаскелем такое по силам даже новичкам; и новичкам с готовностью помогали). Большинство участников поселились все вместе в одном хостеле, так что вечерами собирались большими компаниями, чтоб выпить кружечку пива, познакомиться, послушать рассказы других людей, поделиться своим опытом и впечатлениями. Ну и просто увидеть людей, имена которых были уже знакомы, тоже интересно. Вот они, цюрихакеры (я тут тоже есть):

Atze Dijkstra. Но было много и таких, как я, для которых Хаскель — хобби. Кто-то работает программистом, кто в банке, кто ещё где, а в свободное время — ну понятно. Много хороших, увлечённых людей. Из наших там ещё был Роман Чепляка из Киева. Очень приятными собеседниками оказался Бартек Войчик, работающий в Мюнхене, и Леннарт Колмодин, швед с итальянскими корнями (с ним мы жили в одной комнате). Много ещё кого, всех трудно перечислить. Контактов в твиттере прибавилось.
Я, наконец-то, сподобился выложить свой Snusmumrik на Hackage. Так что он теперь должен устанавливаться по одному волшебному заклинанию
cabal install Snusmumrik
(но только со старым GHC 6.10). Среди выложивших пакеты на Hackage разыгрывалась футболка, но мне она всё равно не досталась. Зря выкладывал?В основном же работал с программой автоматического учёта времени,
arbtt
. Добавил в её классификатор календарные функции, которых мне прежде не хватало. Ребята сделали ещё кое-что полезное, так что набралось на новый релиз. Эту работу, как видно из лога, мы сделали с Йоахимом Брайтнером, немецким боснийцем Мухаремом Хрнъядовичем (сомневаюсь в правильности произношения фамилии) и Мартином Кифелем.К сожалению, разные доклады, назначенные на вечер воскресенья, мне пришлось пропустить. Поезд. Очень жаль, что их не поставили пораньше.
Весь расчудесный офис Гугла в Цюрихе нам не показали. Мы проходили только через фойе, кухню-столовую (это где спиральная горка со второго этажа) и потом сразу в какой-то большой зал. То ли спортивный, то ли для встреч. В пятницу вечером Гугл угостил всех закуской, предложив, в том числе, сэндвичи метр на метр и ледяного пива с избытком. Воду и напитки можно было брать из холодильника без ограничений, чай тоже был. В гугловом туалете над писсуаром и в кабинке висят памятки «Git on the Go», как пользоваться Git-ом. Прочитал :-) А вот фотографировать в офисе запретили (но есть фотки — много фоток —, сделанные гуглерами-организаторами; всё так и было).
Сам Цюрих я не особо разглядел. Ну так, аккуратный городок, ок. Есть красивые места, но уж слишком много магазинов со сверкающими витринами. Убедительной обшарпанности ему не хватает. Ну и новая архитектура — как и офис гугла: кубы домов с панелями приглушённых серо-коричневых оттенков. Тоска. А вот дорога на поезде из Милана в Цюрих очень красива. Узкие, глубокие долины. Местами дорога поднимается достаточно высоко, по моим оценкам не ниже 1000 метров, там ещё лежит снег. А ниже — уже зеленеют луга. Кстати, в швейцарских электричках велосипедные места есть во всех вагонах. В самом Цюрихе велосипедистов тоже много. Видимо, Швейцария вообще чрезвычайно дружественна к велосипедистам (вспоминаю Лозанну, там с этим тоже хорошо). Вот только швейцарские банкиры хуже таксистов: разница обменных курсов 6% + 4 франка (почти 3 €) комиссии за каждый обмен. И всё дорого.
Общее же впечатление, что 2½ дней очень мало. Мне не хватило.
Дополнение: Критика хакатона Романом Чеплякой. По-английски.
Впечатления о Цюрихаке
2010-03-22 18:20:00 (читать в оригинале)Вчера вернулся с Цюрихака. Интересная была поездка. Программировать в компании 80 других фанатов очень даже занятно. Здорово, что можно прямо тут же что-то обсудить, наметить цели, поделить работу и её сделать. Приятно браться за незнакомый код и в сжатый срок добавлять к нему что-то полезное (а с Хаскелем такое по силам даже новичкам; и новичкам с готовностью помогали). Большинство участников поселились все вместе в одном хостеле, так что вечерами собирались большими компаниями, чтоб выпить кружечку пива, познакомиться, послушать рассказы других людей, поделиться своим опытом и впечатлениями. Ну и просто увидеть людей, имена которых были уже знакомы, тоже интересно. Вот они, цюрихакеры (я тут тоже есть):

Atze Dijkstra. Но было много и таких, как я, для которых Хаскель — хобби. Кто-то работает программистом, кто в банке, кто ещё где, а в свободное время — ну понятно. Много хороших, увлечённых людей. Из наших там ещё был Роман Чепляка из Киева. Очень приятными собеседниками оказался Бартек Войчик, работающий в Мюнхене, и Леннарт Колмодин, швед с итальянскими корнями (с ним мы жили в одной комнате). Много ещё кого, всех трудно перечислить. Контактов в твиттере прибавилось.
Я, наконец-то, сподобился выложить свой Snusmumrik на Hackage. Так что он теперь должен устанавливаться по одному волшебному заклинанию
cabal install Snusmumrik
(но только со старым GHC 6.10). Среди выложивших пакеты на Hackage разыгрывалась футболка, но мне она всё равно не досталась. Зря выкладывал?В основном же работал с программой автоматического учёта времени,
arbtt
. Добавил в её классификатор календарные функции, которых мне прежде не хватало. Ребята сделали ещё кое-что полезное, так что набралось на новый релиз. Эту работу, как видно из лога, мы сделали с Йоахимом Брайтнером, немецким боснийцем Мухаремом Хрнъядовичем (сомневаюсь в правильности произношения фамилии) и Мартином Кифелем.К сожалению, разные доклады, назначенные на вечер воскресенья, мне пришлось пропустить. Поезд. Очень жаль, что их не поставили пораньше.
Весь расчудесный офис Гугла в Цюрихе нам не показали. Мы проходили только через фойе, кухню-столовую (это где спиральная горка со второго этажа) и потом сразу в какой-то большой зал. То ли спортивный, то ли для встреч. В пятницу вечером Гугл угостил всех закуской, предложив, в том числе, сэндвичи метр на метр и ледяного пива с избытком. Воду и напитки можно было брать из холодильника без ограничений, чай тоже был. В гугловом туалете над писсуаром и в кабинке висят памятки «Git on the Go», как пользоваться Git-ом. Прочитал :-) А вот фотографировать в офисе запретили (но есть фотки — много фоток —, сделанные гуглерами-организаторами; всё так и было).
Сам Цюрих я не особо разглядел. Ну так, аккуратный городок, ок. Есть красивые места, но уж слишком много магазинов со сверкающими витринами. Убедительной обшарпанности ему не хватает. Ну и новая архитектура — как и офис гугла: кубы домов с панелями приглушённых серо-коричневых оттенков. Тоска. А вот дорога на поезде из Милана в Цюрих очень красива. Узкие, глубокие долины. Местами дорога поднимается достаточно высоко, по моим оценкам не ниже 1000 метров, там ещё лежит снег. А ниже — уже зеленеют луга. Кстати, в швейцарских электричках велосипедные места есть во всех вагонах. В самом Цюрихе велосипедистов тоже много. Видимо, Швейцария вообще чрезвычайно дружественна к велосипедистам (вспоминаю Лозанну, там с этим тоже хорошо). Вот только швейцарские банкиры хуже таксистов: разница обменных курсов 6% + 4 франка (почти 3 €) комиссии за каждый обмен. И всё дорого.
Общее же впечатление, что 2½ дней очень мало. Мне не хватило.
Дополнение: Критика хакатона Романом Чеплякой. По-английски.
Автоматический учёт времени: Arbtt macht frei!
2010-01-29 18:10:00 (читать в оригинале)В линуксе есть несколько разных программок для учёта времени, самая простая и незамысловатая, и при этом вполне функциональная — это, пожалуй, Hamster. С ней всё понятно: добавляем на панель, вбиваем новое дело всякий раз, когда за него берёмся. Главное, не забывать.
А вот есть программка похитрее: arbtt. Пользоваться ей, правда, легче. Она полностью автоматическая. Достаточно запустить
arbtt-capture
и заниматься своими делами*. arbtt-capture
будет записывать когда и какие программы были запущены и какие у окон были заголовки.* Авторarbtt
рекомендует сразу добавитьarbtt-capture
в автоматически запускаемые приложения.
Чтобы увидеть необработанные сырые данные, можно выполнить
arbtt-dump
, но это не очень полезно. Для просмотра статистики удобнее использовать использовать утилитку arbtt-stats
.Чтобы
arbtt-stats
могла выдавать осмысленные результаты, нужно вначале задать свою классификацию запущенных программ. Эти правила вписываются в файл ~/.arbtt/categorize.cfg
. Пример и описание формата правил есть в документации. Приведу свой (сокращённый) пример с комментариями по-русски:-- правила имеют вид:
-- [условие ==>] tag [категория_тега:]тег,
-- в условиях и тегах можно использовать несколько специальных переменных,
-- почти все они встречаются в примерах ниже
-- Не учитывать время простоя
$idle > 60 ==> tag inactive,
-- Все записи за последние 24 часа пометить тегом last-day
$sampleage <= 24:00 ==> tag last-day,
-- Пометить тегом last-hour все записи за последний час
$sampleage <= 1:00 ==> tag last-hour,
-- Все типы окон Firefox учитывать в одном теге program:web (program — это категория тега)
current window $program == "Navigator" ==> tag program:web,
current window $program == "firefox-bin" ==> tag program:web,
current window $program == "gecko" ==> tag program:web,
-- Общий тег для всех видов терминалов (на будущее)
current window $program == "gnome-terminal" ==> tag program:terminal,
-- Пометить все остальные программы пометить тегами вида program:имя_программы
tag program:$current.program,
-- Классифицировать заголовки Firefox с помощью регулярных выражений. Тут у каждого будут свои шаблоны.
-- Присваивать теги категории web.
current window ($program == "Navigator" && $title =~ /^Gmail.*/) ==> tag web:Gmail,
current window ($program == "Navigator" && $title =~ /.*Google Search.*/) ==> tag web:Google,
current window ($program == "Navigator" && $title =~ /^Twitter.*/) ==> tag web:Twitter,
current window ($program == "Navigator" && $title =~ /.* on Twitter - Iceweasel$/) ==> tag web:Twitter,
current window ($program == "Navigator" && $title =~ /^Springer.*/) ==> tag web:Papers,
current window ($program == "Navigator" && $title =~ /^Wiki - Editing.*/) ==> tag web:Papers,
-- ...
--
current window $program == "Navigator" ==> tag web:$current.title,
-- Теги категории time-of-day для классификации по времени суток
$time >= 2:00 && $time < 8:00 ==> tag time-of-day:night,
$time >= 8:00 && $time < 12:00 ==> tag time-of-day:morning,
$time >= 12:00 && $time < 14:00 ==> tag time-of-day:lunchtime,
$time >= 14:00 && $time < 18:00 ==> tag time-of-day:afternoon,
$time >= 18:00 && $time < 22:00 ==> tag time-of-day:evening,
$time >= 22:00 || $time < 2:00 ==> tag time-of-day:late-evening,
-- Помечать над каким проектом работаю судя по заголовку окна.
-- Присваивать теги категории project.
current window $title =~ m!~/work/projectA! ==> tag project:projectA,
current window $title =~ m!~/work/projectB! ==> tag project:projectB,
-- ...
--
-- Помечать, какой тип текста я редактирую судя по заголовку окна.
-- Присваивать теги категории edit.
current window ($title =~ /^[^ ]+\.c .* - G?VIM.*$/) ==> tag edit:c,
current window ($title =~ /^[^ ]+\.py .* - G?VIM.*$/) ==> tag edit:python,
current window ($title =~ /^[^ ]+\.hs .* - G?VIM.*$/) ==> tag edit:haskell,
-- Когда использую suduedit
current window ($title =~ m!.*\(/var/tmp\) - G?VIM.*$!) ==> tag edit:config,
-- Когда редактирую что-то онлайн в Its All Text
current window ($title =~ m!.*/itsalltext\) - G?VIM.*!) ==> tag edit:itsalltext,
Для отчёта по определённой категории:
$ arbtt-stats -c имя_категорииДля просмотра отчётов по всем категориям:
$ arbtt-stats --each-categoryДля ограничения выборки только записями с определённым тегом, например,
last-hour
, есть опция -o
. Всё вместе: $ arbtt-stats -o last-hour -c program -c editВ последнем примере я показал примерный вывод программы. Сразу видно, сколько времени за последний час я что-то редактировал и что именно и какие программы использовал. Писал эту заметку, в общем.
Statistics for category program
===============================
_____________Tag_|___Time_|_Percentage_
program:terminal | 29m00s | 48.33
program:gvim | 17m00s | 28.33
program:web | 13m00s | 21.67
program:Pidgin | 1m00s | 1.67
Statistics for category edit
============================
_____________Tag_|___Time_|_Percentage_
edit:itsalltext | 17m00s | 28.33
edit:haskell | 4m00s | 6.67
(unmatched time) | 39m00s | 65.00
Кстати,
arbtt
есть не только в линуксовых репозиториях, но в скором времени (а может и уже) будет доступна и пользователям Windows.Некоторые замеченные изъяны:
arbtt-stats
при печати портит заголовки окон с уникодом (патчем на 20 строк исправляется, должно быть ОК при сборке новым GHC), пока нельзя классифицировать по дням недели или по месяцам, сообщения о синтаксических ошибках в правилах очень невнятныДополнение: замеченные недостатки, не без моего скромного участия, исправлены во время Хакатона в Цюрихе; используйте GHC 6.12 и устанавливайте новую версию 0.5; там всё ОК.
Приятных всем выходных!
Автоматический учёт времени: Arbtt macht frei!
2010-01-29 18:10:00 (читать в оригинале)В линуксе есть несколько разных программок для учёта времени, самая простая и незамысловатая, и при этом вполне функциональная — это, пожалуй, Hamster. С ней всё понятно: добавляем на панель, вбиваем новое дело всякий раз, когда за него берёмся. Главное, не забывать.
А вот есть программка похитрее: arbtt. Пользоваться ей, правда, легче. Она полностью автоматическая. Достаточно запустить
arbtt-capture
и заниматься своими делами*. arbtt-capture
будет записывать когда и какие программы были запущены и какие у окон были заголовки.* Авторarbtt
рекомендует сразу добавитьarbtt-capture
в автоматически запускаемые приложения.
Чтобы увидеть необработанные сырые данные, можно выполнить
arbtt-dump
, но это не очень полезно. Для просмотра статистики удобнее использовать использовать утилитку arbtt-stats
.Чтобы
arbtt-stats
могла выдавать осмысленные результаты, нужно вначале задать свою классификацию запущенных программ. Эти правила вписываются в файл ~/.arbtt/categorize.cfg
. Пример и описание формата правил есть в документации. Приведу свой (сокращённый) пример с комментариями по-русски:-- правила имеют вид:
-- [условие ==>] tag [категория_тега:]тег,
-- в условиях и тегах можно использовать несколько специальных переменных,
-- почти все они встречаются в примерах ниже
-- Не учитывать время простоя
$idle > 60 ==> tag inactive,
-- Все записи за последние 24 часа пометить тегом last-day
$sampleage <= 24:00 ==> tag last-day,
-- Пометить тегом last-hour все записи за последний час
$sampleage <= 1:00 ==> tag last-hour,
-- Все типы окон Firefox учитывать в одном теге program:web (program — это категория тега)
current window $program == "Navigator" ==> tag program:web,
current window $program == "firefox-bin" ==> tag program:web,
current window $program == "gecko" ==> tag program:web,
-- Общий тег для всех видов терминалов (на будущее)
current window $program == "gnome-terminal" ==> tag program:terminal,
-- Пометить все остальные программы пометить тегами вида program:имя_программы
tag program:$current.program,
-- Классифицировать заголовки Firefox с помощью регулярных выражений. Тут у каждого будут свои шаблоны.
-- Присваивать теги категории web.
current window ($program == "Navigator" && $title =~ /^Gmail.*/) ==> tag web:Gmail,
current window ($program == "Navigator" && $title =~ /.*Google Search.*/) ==> tag web:Google,
current window ($program == "Navigator" && $title =~ /^Twitter.*/) ==> tag web:Twitter,
current window ($program == "Navigator" && $title =~ /.* on Twitter - Iceweasel$/) ==> tag web:Twitter,
current window ($program == "Navigator" && $title =~ /^Springer.*/) ==> tag web:Papers,
current window ($program == "Navigator" && $title =~ /^Wiki - Editing.*/) ==> tag web:Papers,
-- ...
--
current window $program == "Navigator" ==> tag web:$current.title,
-- Теги категории time-of-day для классификации по времени суток
$time >= 2:00 && $time < 8:00 ==> tag time-of-day:night,
$time >= 8:00 && $time < 12:00 ==> tag time-of-day:morning,
$time >= 12:00 && $time < 14:00 ==> tag time-of-day:lunchtime,
$time >= 14:00 && $time < 18:00 ==> tag time-of-day:afternoon,
$time >= 18:00 && $time < 22:00 ==> tag time-of-day:evening,
$time >= 22:00 || $time < 2:00 ==> tag time-of-day:late-evening,
-- Помечать над каким проектом работаю судя по заголовку окна.
-- Присваивать теги категории project.
current window $title =~ m!~/work/projectA! ==> tag project:projectA,
current window $title =~ m!~/work/projectB! ==> tag project:projectB,
-- ...
--
-- Помечать, какой тип текста я редактирую судя по заголовку окна.
-- Присваивать теги категории edit.
current window ($title =~ /^[^ ]+\.c .* - G?VIM.*$/) ==> tag edit:c,
current window ($title =~ /^[^ ]+\.py .* - G?VIM.*$/) ==> tag edit:python,
current window ($title =~ /^[^ ]+\.hs .* - G?VIM.*$/) ==> tag edit:haskell,
-- Когда использую suduedit
current window ($title =~ m!.*\(/var/tmp\) - G?VIM.*$!) ==> tag edit:config,
-- Когда редактирую что-то онлайн в Its All Text
current window ($title =~ m!.*/itsalltext\) - G?VIM.*!) ==> tag edit:itsalltext,
Для отчёта по определённой категории:
$ arbtt-stats -c имя_категорииДля просмотра отчётов по всем категориям:
$ arbtt-stats --each-categoryДля ограничения выборки только записями с определённым тегом, например,
last-hour
, есть опция -o
. Всё вместе: $ arbtt-stats -o last-hour -c program -c editВ последнем примере я показал примерный вывод программы. Сразу видно, сколько времени за последний час я что-то редактировал и что именно и какие программы использовал. Писал эту заметку, в общем.
Statistics for category program
===============================
_____________Tag_|___Time_|_Percentage_
program:terminal | 29m00s | 48.33
program:gvim | 17m00s | 28.33
program:web | 13m00s | 21.67
program:Pidgin | 1m00s | 1.67
Statistics for category edit
============================
_____________Tag_|___Time_|_Percentage_
edit:itsalltext | 17m00s | 28.33
edit:haskell | 4m00s | 6.67
(unmatched time) | 39m00s | 65.00
Кстати,
arbtt
есть не только в линуксовых репозиториях, но в скором времени (а может и уже) будет доступна и пользователям Windows.Некоторые замеченные изъяны:
arbtt-stats
при печати портит заголовки окон с уникодом (патчем на 20 строк исправляется, должно быть ОК при сборке новым GHC), пока нельзя классифицировать по дням недели или по месяцам, сообщения о синтаксических ошибках в правилах очень невнятныДополнение: замеченные недостатки, не без моего скромного участия, исправлены во время Хакатона в Цюрихе; используйте GHC 6.12 и устанавливайте новую версию 0.5; там всё ОК.
Приятных всем выходных!
Три способа отрезать поля у PDF-документа
2010-01-24 16:09:00 (читать в оригинале)Речь пойдёт о том, как отрезать поля (и вообще изменить размер страниц) в PDF-документе. После того, как у меня появилась читалка на электронных чернилах, делать это приходится довольно часто.
В чём проблема: большинство PDF* свёрстаны под печатную страницу формата A4 (29,7×21 см) или Letter, с полями, колонтитулами, всё как положено. А типичный экран читалки — 12×9 см с разрешением 800×600 точек. Даже если показывать по половине странице, на страницу приходится всего 1200×800 точек (и 18×12 см площади экрана). Значит, даже при просмотре страниц «половинками» буквы будут примерно в 1,65 раза мельче, вдобавок и разрешение при этом будет тоже как минимум раза в полтора ниже. Короче говоря, значительная доля PDF, свёрстанных под печать, на нынешних электронных читалка нечитаема.
Впрочем, во многих случаях можно легко из обычного PDF сделать PDF, легко читаемый на экране читалки. Дело в том, что значительную часть площади страницы обычно занимают поля. Они нужны для бумажной версии, но без них вполне можно обойтись на электронной читалке. И если обрезать поля (а в некоторых случаях можно обрезать и колонтитулы), то часто содержательная часть страницы будет выглядеть вполне читаемой и на маленьком экране читалки.
На сегодняшний день я нашёл и попробовал три способа обрезать поля у PDF-файла.
1. Обрезка полей с помощью pdfcrop
Есть скрипт
pdfcrop
на перле (не путать с одноимённым скриптом на питоне), который умеет обрезать поля автоматически. В Debian он входит в состав пакета texlive-extra-utils
.Использовать так:
$ pdfcrop --clip --margin 5 исходный.pdf обрезанный.pdf
Советую всегда всё равно оставлять небольшое поле (
--margin 5
), иначе касающиеся края буквы могут не отображаться на экране читалки.В общем, всё просто. Преимущества: простой автоматический способ, по полученному таким способом PDF сохраняется возможность поиска. Недостатки такого способа:
pdfcrop
очень медленно работает с большими документами (сотни страниц), нельзя автоматически отрезать колонтитулы и заметки на полях (в некоторых случаях проще обойтись без номеров страниц и названия главы сверху, зато получить более крупное изображение основного текста), конкретно моя читалка иногда аварийно перегружается на полученных таким способом PDF, на некоторых файлах pdfcrop
неправильно определяет границы текста, на некоторых портит шрифты.2. Растеризация и обрезка страниц в ImageMagick
Пару раз мне пришлось прибегнуть к написанию самодельного скрипта, заточенного под определённый исходный PDF. Общая схема такая:
Исходный PDF → растеризованные изображения страниц (использую
pdftoppm
) → разрезание страниц на части и обрезка полей (использую convert
из ImageMagick) → сборка нового PDF или DjVu из обрезанных страниц.Вот пример такого скрипта, которым пользуюсь (он не только позволяет разрезать страницы на несколько колонок, но также отрезать поля и пережать, отбросив пустые страницы) — pdf-trim-to-djvu:
Как пользоваться — должно быть ясно из его справки:
Usage: pdf-trim-to-djvu [options] document.pdf
Options:
-fthe first page to process [default: 1]
-tthe last page to process
-dresolution in DPI [default: 150]
-c|--columnsmulti-column mode [default: 1]
--mono bitonal compression (black and white only)
--gray DjVuPhoto compression (shades of gray images) [default]
--color DjVuPhoto compression (color images)
-h|--help print this message
Автоматическая обрезка полей довольно хорошо реализована в команде
-trim
ImageMagick, но можно задать параметры обрезки и вручную (приходилось). Например, чтобы принудительно обрезать по 3% с каждой стороны, в опции convert
можно вставить -shave 3%x3% +repage
.Если хочется не DjVu, а именно PDF, то собрать из изображений PDF можно так (о создании PDF с помощью IM см. здесь):
convert -define pdf:use-trimbox=true `ls -v *.ppm` -density разрешение_в_dpi книжка.pdfЕсли страниц много, такой способ будет очень медленным (и прожорливым), лучше конвертировать каждую отдельно (можно тем же
convert
, если качество устраивает, можно специально для этих целей предназначенным sam2p
), а потом объединять страницы вместе. Для объединения PDF-страниц в PDF-документ я использую pdftk
: $ pdftk *.pdf cat output книжка.pdf
Преимущества этого способа: можно разрезать и обрезать страницы именно так, как надо. Недостатки: возможность поиска по тексту безвозвратно теряется, размер файла обычно увеличивается, добиться нормальной растеризации шрифта трудно, ну и сам скрипт иногда приходится менять под конкретную книжку.
3. Изменение границ страницы в PDFedit
Наконец, есть ещё способ. Совмещающий и возможность указать вручную что именно следует отрезать, и сохраняющий PDF в почти исходном виде. Есть редактор для PDF-файлов — PDFedit. Однако хотя эта программа и с графическим интерфейсом, методы всё те же.

Порядок действий:
- открываем копию PDF-файла в PDFedit и выбираем страницу, целиком заполненную текстом, чтобы было видно его границы;
- засекаем примерные численные координаты углов прямоугольника обрезки;
- в меню «Страница» выбираем «Изменить метрики страницы»; далее вводим новые параметры страницы цифрами, жмём «Изменить», чтобы проверить результат (такой вот GUI; что от чего отмеряется придётся познать на опыте), подобрав параметры страницы применяем обрезку ко всем с 1 по последнюю;
- сохраняем результат.
Преимущества: способ быстрый (даже если в документе несколько сотен страниц), возможность поиска по тексту сохраняется (да и вообще всё сохраняется), можно как угодно отрезать заметки на полях, номера страниц и колонтитулы. Недостатки: способ требует ручного подбора параметров, нельзя вырезать две страницы из одной (может можно, если дублировать страницы?), сам редактор PDFedit далеко не прост и полон сюрпризов.

* Вот, кстати, не пойму. Современные научные статьи распространяются почти исключительно в электронном виде (бумажные отпечатки — сувениры для авторов). За каждую операцию копирования файла издатели стараются взымать по 30 долларов (думаю, не бедствуют), а вот набирают статьи зачастую таким скупым кеглем, словно свою бумагу жалко. Сравните публикации XIX века и нынешнего. Отчего?



Категория «Авто/Мото»
Взлеты Топ 5
![]() | ||
+265 |
299 |
MicheL1102 |
+238 |
257 |
Темы_дня |
+230 |
258 |
Bisdiv.com |
+220 |
259 |
Дневник |
+177 |
284 |
Пофигист |
Падения Топ 5
![]() | ||
-2 |
149 |
Журнал пользователя alexfox2011@mail.ru |
-4 |
147 |
Auto Motive Group Ltd. |
-6 |
240 |
Kia K3 | Cerato - Forte |
-8 |
119 |
News Formula 1 |
-10 |
135 |
BMW-guide |

Популярные за сутки
Загрузка...

BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.
взяты из открытых общедоступных источников и являются собственностью их авторов.