среда, 25 февраля 2015 г.

Добавление водяного знака и защиты документа в word средствами openxml на C#

Создавать и редактировать документы word можно как с помощью OLE объекта так и напрямую с помощью openxml. Второй вариант предпочтительнее как по скорости работы, так и по надежности.
Для создания и редактирование документа word формата docx существует не мало библиотек, вот некоторые из них: GemBox, Aspose, WordGlue и DocX. Только последний является бесплатным, но к сожалению несет в себе некоторые ограничения, в общем эти ограничения возможно присутствуют и в других библиотеках.

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

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


вторник, 17 февраля 2015 г.

EveryLang — переводим, проверяем орфографию, переключаем и показываем текущую раскладку клавиатуры

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

Все эти возможности уже реализованы в других программах.

Переводчики: Translateclient, QTranslate, Dicter и т.д.
Проверка орфографии: Spell Checker, решения ОРФО, LanguageTool, возможно что-то есть еще.
Переключение раскладки: Punto Switcher, Arum Switcher, Key Switcher и несколько небольших проектов энтузиастов.
Индикатор текущего языка ввода: Aml Maple.

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





четверг, 6 октября 2011 г.

Создание инсталлятора с помощью Inno Setup

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

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


среда, 10 августа 2011 г.

Решение проблем с Windows Scripting Host

При установке PostgreSQL на Windows 7 возникла ошибка "Unable to write inside TEMP environment variable path", как показал недолгий поиск в Google, ошибка связана с Windows Scripting Host.
Для решения проблемы необходимо скачать vbsfix_vista.zip и запустить его, он добавит все что надо в реестр и проблема решится.

вторник, 2 августа 2011 г.

Автозагрузка python приложения в Windows

Осуществить данную задачу можно двумя путями, первый состоит в том, чтобы записать значение в реестр (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run), здесь подробно описан данный метод. Однако при этом нам будет необходимо разрешение на запись в реестр, и чтобы его получить придется постараться.

Второй путь проще и не требует особых привилегий программе, для этого необходимо создать ярлык программы в C:\Users\UserName\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup (путь для Windows 7).

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


import winshell

import os
import sys

def set_startup():
try:
# get path and file name for application
startFile = os.path.abspath(sys.argv[0])
# get startup folder
startup=winshell.startup()
# create shortcut in startup folder
winshell.CreateShortcut (
Path=os.path.join (startup, "application.lnk"),
Target=startFile,
Icon=(startFile, 0),
Description="My application",
StartIn=os.path.abspath(None)
)
except :
pass

def remove_startup():
try:
startup=winshell.startup()
# remove shortcut from startup folder
if os.path.isfile(startup + '\\application.lnk'):
os.remove(startup + '\\application.lnk')
except :
pass


В коде использован пакет winshell, позволяющий получать доступ к специальным папкам Windows.