Интегрируйте наш конвертер у себя на сайте
1. Преобразование файлов в файлы определенного формата (с конкретными настройками)
С помощью этого инструмента вы направляете посетителя вашего веб-сайта на страницу нашего сайта, где он вводит URL-адрес конвертируемого файла. Пользователь может выбрать настройки, но не может менять формат конечного файла.
Для внедрения функции разместите ссылку ниже на странице вашего веб-сайта. GET-параметр external_url содержит URL-адрес файла, который вы хотите преобразовать. Примечение: GET-параметр external_url должен быть с URL-кодированием.
Этот пример показывает, как пользоваться другими предустановленными параметрами. Мы добавили «&width=320&height=240» к ссылке для того, чтобы по умолчанию размер картинки составлял 320×240 пикселов. Вы можете установить значения параметров по умолчанию в исходном HTML-коде того конвертера, который вы выбрали.
2. Преобразование файла с использованием определенных настроек и возможностью выбора конечного формата
С помощью этого способа конвертирования вы направляете посетителя вашего веб-сайта на страницу нашего сайта, где он вводит URL-адрес конвертируемого файла. При этом пользователь может выбирать формат конечного файла, но не может менять другие настройки.
Для внедрения функции разместите ссылку ниже на странице вашего веб-сайта. GET-параметр external_url содержит URL-адрес файла, который вы хотите преобразовать. Примечение: GET-параметр external_url должен быть с URL-кодированием.
3. Использование наших API-интерфейсов
С помощью этого способа конвертирования вы направляете посетителя вашего веб-сайта на страницу нашего сайта, где он вводит URL-адрес конвертируемого файла. При этом пользователь может выбирать формат конечного файла, но не может менять другие настройки.
Как сделать веб-сервис для конвертации файлов Excel, Word, TXT и других в PDF в режиме «как вижу»
Откуда пошла дурацкая привычка сохранять счета, бухгалтерские и финансовые документы в формате MS Excel? Зачем хранить и передавать документы, предназначенные для печати в формате электронной таблицы, если есть специальный формат PDF? Однако, во всех бухгалтерских программах документы в первую очередь обязательно экспортируются в MS Excel и уже потом предлагаются альтернативные способы сохранения документов. От сюда и возникла задача: пусть бухгалтер сохраняет свои документы как хочет, но клиент должен получить их в формате PDF и обязательно точно в том образе, который бухгалтер сваял в шаблоне MS Excel.
В качестве бухгалтерской программы мы использовали бесплатную ВС: Бухгалтерию. (По правде сказать из этой программы можно сразу сохранять документы в PDF, но раз сказали excel, значит – excel.)
Бухгалтер выгружает XLS-файл в определенный каталог на диске, откуда мы должны его забрать, перевести в PDF и сохранить в другой каталог. Все это должно быть реализовано в виде веб-сервиса, то есть клиент должен увидеть и иметь возможность скачать свои pdf-документы в «Личном кабинете» на сайте.
Пути решения:
Первое, что захотелось сделать, – это отыскать готовую библиотеку для PHP или Perl и прямо «на лету» конвертировать файлы.
Такие библиотеки для работы с форматом Excel действительно нашлись, например: PHPExcel, PHPExcelReader, Spreadsheet::ParseExcel и др.
Эти библиотеки действительно хорошо работают, но делают именно то, для чего предназначены: выискивают данные в электронной таблице Excel и оперируют с ними.
Нам же нужно совсем иное – получить экселевскую таблицу в виде как для печати, со всеми картинками с печатями и подписями, с форматами шрифтов, и ячеек.
Второй вариант решения — виртуальный принтер. Суть его в том, что мы открываем файл в подходящей программе и отправляем его на печать, но не на настоящий принтер, а – на виртуальный, который вместо бумаги сохранит в файл, сначала в постскрипт формате ps, а потом сделает из него файл PDF.
Поскольку система ко всему еще и должна функционировать как веб-сервис, я выбрал в качестве платформы Linux с Apache. А в качестве программы, которая умеет открывать все файлы MS Office – бесплатный OpenOffice.org 3.4
Итак, что делаем:
Создаем конвертер в PDF
Создаем bash-файл, например с именем converter.sh
Выставьте права для запуска скрипта converter.sh (755)
Поместите в один каталог с этим скриптом (converter.sh) Excel-файл под именем sample.xls, запустите скрипт converter.sh и в каталоге появится файл sample.pdf, который будет копией печатного вида экселевского файла.
Пол-дела сделано. Теперь нам нужно организовать процесс конвертации в виде веб-сервиса.
Можно, конечно, поместить файл converter.sh в каталог /cgi-bin/ Apache и запускать сразу его, но тут уже начинаются задачи обеспечения безопасности. К вопросу безопасности такого сервиса нужно подойти очень тщательно, ведь мы собираемся передавать скрипту неизвестные файлы и разрешать ему сохранять неизвестно что на диске.
Правильный подход – это разместить файл converter.sh выше DOCUMENT_ROOT Apache, а обращаться к нему через скрипт-посредник, например, на perl, который будет лежать в каталоге /cgi-bin/ и тщательно проверять все параметры, передаваемые в converter.sh.
Какие обнаружились проблемы, после реализации сервиса конвертации.
Оказалось, что Linux не понимает файлы с именами русскими буквами в кодировке windows-1251. Что тут можно сделать:
1. Уговорить бухгалтера сохранять файлы с латинскими именами (сложно)
2. Конвертировать имя файла в utf-8 при загрузке в каталог (вполне реально)
3. Реализовать аналогичный сервис под Windows – Apache (попробую)
Под Windows конвертер реализовать тоже оказалось несложно
Я сделал так:
1. Скачал и установил LibreOffice 3.4
2. Скачал PyODConverter
3. Сохранил файл DocumentConverter.py в рабочем каталоге, например, C:\test\
4. Поменял в файле DocumentConverter.py константу DEFAULT_OPENOFFICE_PORT = 8100 (по умолчанию там был указан другой порт)
5. Поместил в каталог C:\test\ пробный файл для конвертации – test.xls
Теперь запускаем процесс конвертации.
Сначала запускаем OpenOffice в скрытом режиме. В командной строке (cmd) пишем:
Здесь важно, чтобы порт совпадал с DEFAULT_OPENOFFICE_PORT
Теперь запускаем конвертацию:
«C:\Program Files\LibreOffice.org 3.4\program\python» c:\test\DocumentConverter.py c:\test\test.xls c:\test\test.pdf
И в каталоге c:\test\ обнаруживаем конвертированный файл PDF.
Вот и готов конвертер файлов xls, doc, docx, rtf, txt, odt, ott, sxw, stw, html, xml, в общем всего, что откроет OpenOffice.
Написать простейший конвертер форматов
Web-конвертер различных форматов видео на C#
Уважаемые программисты помогите пожалуйста. могу ли я на Cи# написать web приложение на сайт.
Написать простейший клиент-сервер
Привет,форум. С наступившем всех. Нужно написать простейший клиент-сервер, который получает данные.
Как написать конвертер величин
Есть несколько величин например (см,дм,м,км) для каждой величины свой textbox. Как сделать.
Написать конвертер из jpg в bmp
Здравствуй, форум. Можно ли как-то написать конвентор из jpg в bmp? и как это сделать?
DOC-файл-то практически текстовый? Это бинарный закрытый формат. Он ниразу не «текстовый». Я про его внутренности, конечно же. PDF хоть и открытый, но крайне сложно устроен.
Поищите задачу попроще.
Добавлено через 2 минуты
Решение
Программисты одни из немногих людей которым гнать на образование моветон. Ввиду того что этим самым образованием придется заниматься все время. И решать задачи которые ты никогда не решал тоже придется, такие дела, да.
Ну и решение во вложении.
Вложения
ConsoleApp29.7z (5.94 Мб, 67 просмотров) |
Написать конвертер валют (3 валюты).
Написать конвертер валют (3 валюты). У пользователя есть баланс в каждой из представленных.
Можно ли написать простейший интерпретатор
Добрый вечер. Задача состоит в том, чтобы например в теле программе пользователь мог написать.
Как написать конвертер форматов изображений
Помогите, нужно написать конвертор изображений, но я не могу сделать конвертацию tiff>bmp и.
В этой статье я хотел бы рассказать опыт нашей команды по созданию универсального конвертера данных. На первый взгляд звучит очень просто, что тут сложного? Взять один тип данных привести к другому типу. А если данные это структура? Тоже не трудно, вы скажете, просто нужно выполнить меппинг полей. Да, просто. Но когда целевых структур несколько, все они сложные и требуется конвертация “на лету”, да еще и с обогащением данных, то как говорится “надо думать”.
Перед командой была поставлена задача:
Написать конвертер данных из одной структуры в несколько других целевых структур. Причем формат хранения данных источника и данных назначения могут быть абсолютно произвольными. Конвертация должна выполняться на основе правил с возможностью повторного использования и редактирования. В процессе конвертации некоторые данные нужно перекодировать, например перевести строку “#ff0000” в строку “red”.
Вдобавок, как известно, все интеграционные конвертации пользователь хочет уметь читать и редактировать, т.е. разрабатываемый функционал должен быть вынесен на UI с возможностью редактирования.
Итак, приступим. В теории входные и выходные форматы могут быть любого типа (csv, json и т.д.). Для наглядности выберем формат XML.
Пример XML источника — «конвертировать ИЗ»:
Пример XML назначения — «конвертировать В»:
Как вы видим, на пути возникают пересчеты и конвертации, меняется не только расположение значений в структуре, но и их типы, есть расчетные значения, причем в данных источника нет всех необходимых данных для успешного пересчета в конечный формат (требуется обогащение). Перечислю несколько:
Выбор контейнера для доступа к данным
Работать напрямую с XML форматом мы не можем, т.к. во первых это текст, а во вторых есть требование не привязываться к формату. В этом случае логично работать с объектами-контейнерами в памяти компьютера, которые будут иметь удобный интерфейс доступа к своим данным и иметь структурный тип для ссылки на его части.
Для этого наилучшим образом подходят обычные С# классы, у которых структура точно соответствует данным для хранения. Создание этого класса значительно упрощается если XML типизированный и в наличии есть XSD схема. С помощью утилит можно собрать класс автоматично и использовать его в коде без лишних трудозатрат.
Ниже описываются классы для наших структур
Класс-контейнер C# источника:
Класс-контейнер C# назначения:
Загрузка данных источника в контейнер
Доступ к данным контейнеров
Правила конвертации данных контейнера-источника в контейнер-назначения
Схема 1. Схема взаимодействия компонент внутри конвертора:
Теперь разработаем механизм конвертации с применением правил. С их помощью мы должны уметь описать любую конвертацию.
Писать новый язык правил, а потом реализовывать для него отдельный компилятор или интерпретатор — это явно лишнее. Мы решили воспользоваться обыкновенным кодом C#, который всегда можно скомпилировать и подключить к существующему функционалу. Были разработаны несколько интерфейсов и базовых классов C#.
И правило конвертации:
Задача конвертера, произвести преобразование указанного объекта источника source в новый объект типа T в соответствии со списком правил.
Во время конвертации “источника” в “назначение”, конвертер выполняет следующие действия.
На вход каждому правилу передается объект контейнер-источник source. Правило должно выполнить расчет и вернуть результирующее значение. Как видно на примере, в правилах конвертации нет строгой типизации, на вход может быть передан объект, на выходе мы тоже получаем объект.
Рассмотрим пример правила, которое: получает цену автомобиля Car.Price разбирает на составляющие, пересчитает по курсу ЦБ в рублях (на дату пересчета) и записывает значение в Vehicle.Msrp” целевого контейнера.
Ниже представлена таблица настройки правила конвертации:
Целевой узел в объекте назначения | Правило конвертации (класс в сборке) | Параметры для правила конвертации |
---|---|---|
Vehicle.Msrp | ConvertStringPriceToMsrp | TargetCurrency = “RUB”, SourcePath = “Car.Price” |
Пример класса заказного правила конвертации:
Перед запуском правила, выполняется его инициализация путем перебора его полей и свойств через рефлексию и заполнения одноименных значениями TargetCurrency, SourcePath из конфига (набора параметров для конкретного экземпляра правила).
Обрабатывая данное правило, объект ConvertStringPriceToMsrp берет значение поля в контейнере источнике Car.Price, разбивает строку на составляющие: цена и валюта, и создает результирующий объект Msrp, заполняя поля Msrp.Curreny = RUB и Msrp.Value=[цена в рублях].
Как видно из описания, правилу еще необходимо обратиться к внешнему источнику данных, чтобы получить текущий курс рубля к доллару. Т.е. правило конвертации может подключаться к любым внешним источникам данных и выполнять обогащение данных.
Выгрузка данных назначения из контейнера
Если файл назначения также специфичен, то для этого необходимо написать адаптер, который наш контейнер-назначение сохранит в нужном формате.
Действующий прототип достоинства и проблемы
Для автоматической подгрузки сервисных библиотек-справочников (для обогащения данных, для многократно используемых справочников) мы внедрили IoC Autofac. Таким образом при конвертации большого количества однородных данных мы решили проблему лишней нагрузки на ввод-вывод и ускорили обработку.
Конвертация к объекту назначения происходит в один проход без лишних циклов.
Благодаря рекурсивности, есть возможность подстановки значения узла опционально “на выбор”. Данная опция весьма полезна для XML, когда структура одного тега зависит от другого (например от типа товара, заполняются разные теги — мы это активно используем при формировании XML в Amazon API).
В тоже время, вся работа с метаданными основана на рефлексии, и на горизонте есть потенциальная проблема скорости. Проблема проявит себя когда задержки расчетов рефлексии будут доминировать нам быстрыми вычислениями внутри правил конвертеров. В текущий момент такая проблема пока не заявила о себе. Но, если она и появится, то есть идея выполнять кэширование типов контейнера-назначения при пакетной обработке.
Все настройки правил мы вынесли на Web интерфейс, что бы пользователи могли оперативно менять настройки. Настройки конвертаций сначала хранили в XML, но для удобства редактирования решили перенести в базу данных.
Как написать конвертер файлов
Что делать? Чертыхаться и искать в интернете бесплатный конвертер, который не тормозит, не просит денег и не вставляет рекламные баннеры в ваши фото и видео? Простой лайфхак избавит вас от страданий — вы сможете менять формат файла простым переименованием расширения прямо на рабочем столе.
Если вы попробуете переименовать файл прямо сейчас, вы увидите только название документа (например, «Проект123»). Тип расширения скрыт по умолчанию во всех версиях Windows. После выполнения простых манипуляций в названии всех файлов будет указан и формат («Проект123.docx»), который вы сможете свободно редактировать, как обычный текст.
Как увидеть расширение файла? Покажу на примере Windows 10. Инструкция почти не отличается от действий в других версиях этой ОС.
Откройте панель управления. Для этого нужно выполнить такую цепочку действий: Пуск → Панель управления → Оформление и персонализация → Параметры папок. В Windows 10 введите в поисковую строку (она находится рядом с кнопкой Пуск) «Параметры Проводника» и нажмите Enter.
В открывшемся окне перейдите во вкладку «Вид» и пролистайте список «Дополнительные параметры» до конца.
Остается только убрать флажок с пункта «Скрывать расширения для зарегистрированных типов файлов» и нажать «Применить»:
Обратите внимание на ваш рабочий стол — теперь в названии каждого файла указан его формат.
На самом деле, это и не шаг вовсе, а маленький шажок. Выполните четыре простых действия:
— кликните на нужный файл. Например, «Проект123.docx»,
— нажмите F2 (или кликните на файл правой кнопкой мыши, а потом — на «Переименовать»),
— замените в названии файла «docx» на «doc» и нажмите Enter,
— нажмите Enter в возникшем диалоговом окне.
Готово! Так же поступайте с файлами других форматов, например, заменяйте «Картинку.jpg» на «Картинку.png». Теперь для конвертации вам не нужно пересохранять файл в программе или пользоваться сторонними сервисами.
Этот способ отлично работает для простых типов конвертации фото, аудио, видео и документов в Word. Для сложных конвертаций вроде изменений формата электронных книг (fb2, mobi и другие) в PDF придется пользоваться специальным конвертером. Также уточню, что, изменив тип файла, вы не превратите аудио в видео, а видео в текст. Расширение — это только подсказка для вашего компьютера, которая помогает ему открыть файл в нужной программе, и оно должно соответствовать его содержанию. Например, рисунок в Пэйнте не откроется в Ворде, если изменить формат.jpeg на.docx.
Инструкция актуальна на август 2018 года.