суббота, 3 ноября 2012 г.

О том как вставить JavaScript-код в PDF-файл


Полезный совет 

Как вставить JavaScript-код в PDF-файл

Сегодня поговорим про то, как вставить JavaScript-код в PDF-файл, используя только бесплатные библиотеки.

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

Делать мы все это будем с помощью C#, WPF и библиотеки iTextSharp. Интерфейс программы сейчас выглядит вот так:



Надо заметить, что эта программа - несколько урезанная версия веб-сервиса, делающего, по сути, то же самое.

В программе используются 2 плана: бесплатный и платный. Бесплатный - с рекламой, платный - без рекламы. Мы будем компилировать программу для бесплатного аккаунта.

1./// <summary>
2./// План аккаунта
3./// </summary>
4.enum Plan { free, hard };
5.const Plan option = Plan.free;
Также нам понадобится файл с JavaScript-кодом, который мы будем внедрять в PDF.

1.//
2.string fileWithJavaScript = "JSSubscribe.dat";
Дальше проверяем кодировку у этого файла, нам нужна UTF-8, чтобы не было проблем при внедрении.

1.string directory = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
2.fileWithJavaScript = System.IO.Path.Combine(directory, fileWithJavaScript);
3.if (!IsUTF8File(fileWithJavaScript)) RecodeFileToUTF8(fileWithJavaScript);
Для этого используем функцию IsUTF8File() и RecodeFileToUTF8(). Здесь нам понадобится бесплатная библиотека, которая так и называется - Utf8Checker.

01./// <summary>
02./// Проверяет, является ли кодировка файла UTF-8
03./// </summary>
04./// <param name="path">Имя файла</param>
05./// <returns>Кодировка UTF-8?</returns>
06.static bool IsUTF8File(string path)
07.{
08.Utf8Checker checker = new Utf8Checker();
09.using (Stream stream = File.OpenRead(path)) return (checker.IsUtf8(stream));
10.}
11./// <summary>
12./// Перекодирует файл в UTF-8
13./// </summary>
14./// <param name="fileName">Имя файла</param>
15.static void RecodeFileToUTF8(string fileName)
16.{
17.string tempStringWithText;
18.using (StreamReader reader = new StreamReader(File.OpenRead(fileName), Encoding.GetEncoding(1251))) tempStringWithText = reader.ReadToEnd();
19.FileInfo f = new FileInfo(fileName);
20.f.Delete();
21.using (StreamWriter writer = new StreamWriter(File.OpenWrite(fileName), Encoding.UTF8)) writer.Write(tempStringWithText);
22.}
Далее по нажатию на кнопку "Открыть" запрашиваем файл у пользователя.

01.private void OpenCmdExecuted(object sender, ExecutedRoutedEventArgs e)
02.{
03.statBarText.Text = "Ждите";
04.// Создать диалоговое окно открытия файла, отображающее только файлы Excel
05.OpenFileDialog openDlg = new OpenFileDialog();
06.openDlg.Filter = "Файлы PDF |*.pdf";
07.if (true == openDlg.ShowDialog())
08.{
09.// Загрузить название файла
10.string filename = openDlg.FileName;
11.// Отобразить строку в TextBox
12.txtData.Text = filename;
13.}
14.statBarText.Text = "Готово";
15.}
Затем пользователь заполняет указанные в графическом интерфейсе поля, и нажимает на кнопку "Вставить форму подписки":

01.private void SaveCmdExecuted(object sender, ExecutedRoutedEventArgs e)
02.{
03.statBarText.Text = "Ждите, идет обработка данных";
04.// Сохранить данные из TextBox в файле с тем же именем
05.if (IsValidForm(sender))
06.{
07.string stringWithJavaScript = CustomizeFileWithJavaScript(fileWithJavaScript, int.Parse(uid.Text),int.Parse(did.Text), offerInForm.Text, buttonTextInForm.Text, option);
08.SaveFileDialog saveDlg = new SaveFileDialog();
09.saveDlg.Filter = "Файлы PDF |*.pdf";
10.if (true == saveDlg.ShowDialog())
11.{
12.// Загрузить название файла
13.string filename = saveDlg.FileName;
14.try
15.{
16.IncludeJSInFile(stringWithJavaScript, txtData.Text, filename);
17.}
18.catch (Exception ex)
19.{
20.MessageBox.Show(ex.Message);
21.}
22.}
23.statBarText.Text = "Вставка формы подписки в pdf завершена.";
24.}
25.}
26./// <summary>
27./// Вставляет JavaScript в pdf
28./// </summary>
29./// <param name="stringWithJavaScript">Строка с кодом JavaScript, который необходимо вставить</param>
30./// <param name="inputPDFpath">Pdf, в который нужно вставить JavaScript</param>
31./// <param name="outputPDFpath">Pdf со вставленным JavaScript</param>
32.static void IncludeJSInFile(string stringWithJavaScript, string inputPDFpath, string outputPDFpath)
33.{
34.PdfReader reader = new PdfReader(inputPDFpath);
35.Document document = new Document();
36.PdfWriter writer;
37.try
38.{
39.writer = PdfWriter.GetInstance(document, new FileStream(outputPDFpath, FileMode.Create));
40.}
41.catch (IOException ex)
42.{
43.Exception error = new Exception("Закройте файл", ex);
44.throw error;
45.}
46.document.Open();
47.PdfContentByte cb = writer.DirectContent;
48.PdfImportedPage page;
49.for (int i = 1; i <= reader.NumberOfPages; i++)
50.{
51.document.SetPageSize(reader.GetPageSizeWithRotation(i));
52.document.NewPage();
53.page = writer.GetImportedPage(reader, i);
54.cb.AddTemplate(page, 0, 0);
55.}
56.PdfAction jAction = PdfAction.JavaScript(stringWithJavaScript, writer, true);
57.writer.AddJavaScript(jAction);
58.document.Close();
59.Console.WriteLine("Вставка JavaScript в pdf завершена.");
60.}
Функция IsValidForm() проверяет правильность введенных полей, а CustomizeFileWithJavaScript() настраивает форму подписки в зависимости от плана.

Интерфейс с заполненными полями будет выглядеть вот так:



Пример PDF со вставленным JavaScript можно скачать по ссылке:Пример файла с JavaScript.pdf http://seesharp.ru/wp-content/uploads/2012/11/%D0%9A%D0%B0%D0%BA-%D1%81%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%B8%D1%82%D1%8C-%D1%80%D0%B5%D0%B7%D1%8E%D0%BC%D0%B5.pdf . Надо заметить, что JavaScript будет работать только в Adobe PDF Reader. 

Ксения Кузнецова,
руководитель проекта SeeSharp.ru 

Как раскрутить блог про путешествия


 Первый этап – выбор ниши.


Если есть какие-то сложности с формулировкой, я на Workshop буду давать готовые ниши – свою коллекцию из 112 ниш, в которых люди уже что-то продают.
 Самый простой способ такой.

Вы берете то, что уже продается, и начинаете продавать это или лучше, или по-другому.


Потом вы делаете какую-то бесплатную «взятку» и начинаете ее распихивать по всем сайтам, форумам, партнерам. И таким образом вы собираете базу тех людей, кому это интересно. После этого вы продаете только тем, кто заинтересовался. Опять же только после этого вы начинаете разворачивать всю свою линейку : коучинговые программы и все прочее.


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


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


Здесь схема такая: собери людей, у которых есть проблема, пойми этих людей, сначала дай им что-то бесплатно, и только потом ты поймешь, что ты можешь им продать.


Параллельно с этим вам нужно будет вести свой блог о путешествиях.
Ваши лучшие блоги о путешествиях я буду дальше продвигать. Мне интересно развивать ваши результаты. Я уже себе и всем доказал, что путешествовать и зарабатывать – это реально.
Я уже выложил 25.000 фотографий с подписями. Теперь у меня другая задача: я хочу показать людям вас – что вы сделали, что у вас получилось, рассказать ваши истории успеха. Продемонстрировать, как вы «зажигаете» на отдыхе и как вы работаете на отдыхе и в путешествиях. Поэтому у вас хорошо будет получаться. Во время поездок вы записываете обучение на видео.

Почему в самом начале я говорил про камеру?

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

Вот в Таиланд приехали и первым делом поехали на дайвинг – обязательно берем с собой подводную камеру. Забрались тут же на гору.

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

Какие вам потребуются программы для монтажа?

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

Я сейчас уже приноровился снимать видео так, чтобы его не приходилось потом монтировать. Moms explorer на iPhone IMOOV делают для YouTube практически двумя пальцами. Отлично, будем пробовать, тестировать.

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

Девиз простой: «Живи красиво, и пусть тебе за это платят».



 Причем на рекламу мы не размениваемся. Мы даем развлечение и обучение – вот принцип нашей коммерческой «секты». Ты должен развлекать и обучать. К тому же классно действует принцип пиара.

Допустим, когда мы были в Хорватии, я договорился с Алексеем Ситниковым, чтобы он в своем ЖЖ выкладывал все фотографии, на которых мы тусуемся и где все очень красиво. Например, огненный закат, солнце постепенно садится в море, и на фоне всей этой красоты стоишь ты на носу яхты.



В чем соль? 


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

 Принцип пиара заключается в том, что вы что-то делаете, а кто-то об этом пишет. Причем я для начала использовал обычный ЖЖ.

Регистрация на http://www.livejournal.com/ занимает пять минут.

 И вот вы уже обладатель блога. Блог на http://www.wordpress.com/ – это когда вы уже понимаете, что в теме есть какой-то смысл, что люди готовы за это платить.

 Тогда можно сделать сайт на те деньги, которые вы уже заработали. Я использую такой принцип: проект должен сам себя окупать. Причем сразу. Не нужно вкладывать в него безумные деньги.
Многим мужчинам очень близок такой подход: чтобы все сразу, все круто и красную ленточку перерезать. Это вовсе необязательно.

Можно начать с ЖЖ и потихонечку его вести. Можно его резво вести – так, что народ аж потряхивает.


Источник

пятница, 2 ноября 2012 г.

Культура и цивилизации : Полезные сервисы и услуги / Культура и религия

Культура и цивилизации : Полезные сервисы и услуги / Культура и религия

Пример хороших сайтов от FO.RU

Зацените друзья ! 

Как Вам дизайн сайта который был очень быстро создан на платформе от FO.RU?

Конструктор сайтов вам быстро поможет сделать сайт и не хуже чем этот сайт !


Сайт :Вкусный праздник! / Главная
ИЛИ ТАКОЙ КАК ЭТОТ САЙТ!!!
Культура и цивилизации : Культура и религия
На мой взгляд не плохо для начала!
ТАК ДЕРЖАТЬ!!!
А ВЫ ХОТИТЕ СЕБЕ ТАКОЙ ЖЕ?ТОГДА НЕ ТЕРЯЙТЕ ВРЕМЕНИ И ПЕРЕХОДИТЕ СЮДА ПО ЭТОЙ ССЫЛКЕ

четверг, 1 ноября 2012 г.

Инновационная полностью автоматическая бесплатная раскрутка


Инновационная полностью автоматическая бесплатная раскрутка сайта.


Как это работает?


Хотите узнать подробней о этой системе раскрутки?

Заходите сюда

Оригинальный И бесплатный подарок это сайт


Вы хотите получить оригинальный, бесплатный подарок?

Легко !!!


У Вас еще не возникла идея для собственного сайта?

Не беда!

Сделайте Сайт в подарок своим близким!

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


Дарите сайты, радуйте и удивляйте!



 А еще у нас есть корпоративный блог , в котором мы делимся новостями разработки и обновлений сервиса FO.RU.