Форматирование java в word
мне нужно открыть .doc/.dot/.docx/.dotx (Я не придирчивый, я просто хочу, чтобы он работал) документ, разобрать его для заполнителей (или что-то подобное), поместите мои собственные данные, а затем вернуть сгенерированный .doc/.docx/.pdf документ.
и, кроме того, мне нужны инструменты для достижения этого, чтобы быть свободным.
Я искал что-то, что испортило бы мои потребности, но я ничего не могу найти. Инструменты, такие как Docmosis, Javadocx, Aspose и т. д. являются коммерческими. Из того, что я прочитал, Apache POI нигде рядом с успешной реализацией этого (в настоящее время у них нет официального разработчика, работающего над Word частью framework).
единственное, что выглядит, что может сделать трюк OpenOffice UNO API. Но это довольно большой байт для того, кто никогда не использовал этот API (как я).
может кто-нибудь дать мне совет по этому поводу?
Я знаю, что прошло много времени с тех пор, как я опубликовал этот вопрос, и я сказал, что опубликую свое решение, когда закончу. Вот оно.
Я надеюсь, что это поможет кому-нибудь. Это полный рабочий класс, и все, что вам нужно сделать, это поместить его в приложение и разместить каталог TEMPLATE_DIRECTORY_ROOT .шаблоны docx в корневом каталоге.
использование очень простое. Вы помещаете заполнители (ключ) в свой .docx файл, а затем передать имя файла и карте содержащих соответствующие пары ключ-значение для этого файла.
поскольку файл docx - это просто zip-архив xml-файлов (плюс любые двоичные файлы для встроенных объектов, таких как изображения), мы выполнили это требование, распаковав zip-файл, подав документ.xml для механизма шаблонов (мы использовали freemarker), который делает слияние для нас, а затем сжимает выходной документ, чтобы получить новый файл docx.
документ шаблона тогда просто обычный docx со встроенными выражениями / директивами freemarker и может быть отредактирован в Слово.
поскольку (un)zipping можно сделать с помощью JDK, а Freemarker является открытым исходным кодом, вы не несете никаких лицензионных сборов, даже для самого word.
ограничение заключается в том, что этот подход может выдавать только файлы docx или rtf, а выходной документ будет иметь тот же тип файла, что и шаблон. Если вам нужно преобразовать документ в другой формат (например, PDF) вам придется решать эту проблему отдельно.
Я в конечном итоге полагался на Apache Poi 3.12 и обрабатывал абзацы (отдельно извлекая абзацы также из таблиц, верхних / нижних колонтитулов и сносок, поскольку такие абзацы не возвращаются XWPFDocument.getParagraphs () ).
недавно я занимался аналогичной проблемой: "Инструмент, который принимает шаблон ".docx ' файл, обрабатывает файл путем оценки контекста переданного параметра и выводит a '.файл docx в результате процесса."
наконец-то Бог привел нас scriptlet4dox :). ключевые особенности этого продукта: 1. инъекция кода groovy в виде скриптов в файле шаблона (инъекция параметров и т. д.) 2. цикл над элементами коллекции в таблице
и многие другие особенности. но как я проверил последний коммит по проекту выполняется около года назад, так что есть вероятность, что проект не поддерживается для новых функций и новых исправлений ошибок. это ваш выбор использовать его или нет.
Можно ли и какими средствами оформить java код в документе Microsoft Word? Спасибо.
3 ответа 3
Надо написать красявый отчет начальству или там преподам - так я понимаю? Делается так:
- Запускаем Intellij IDEA
- Загружаем файлик и набираем File->Export to HTML.
- Далее полученный HTML загружаем в Word и получаем очень презентабельный код, с подсвеченными ключевыми словами, а если надо и с номерами строк.
- Если форматирование кода не нравится, то можно подобрать через все тот же IDEA (через File->Settings->Code style) стиль кода, шрифты, переносы, фигурные скобки и проч.
Update Для поклонников Eclipse - есть плагин Java2HTML или же его версия в виде отдельного Java приложения, которое также генерирует HTML
- Открыл IE
- Открыл вопрос на хэшкоде, любой, там где код раскрашен.
- Выделил код, нажал ctrl-c
- В ворде нажал ctrl-v
- Профит
Иными словами отстайлить код в html'е, его в ворде открыть.
спасибо! я кстати вчера примерно так и сделал, "отформатил" в pastebin и скопировал в Word =) Подсветка синтаксиса сохранилась!
я так понимаю тут вопрос стоит в привязке к IDE с которым вы работаете.
я работаю с eclipse, и для меня проблема решается так: код копирую прямо с IDE в word (он копируется вместе с форматированием). есть только один нюанс: если вы вставляете одну строчку или очень маленький кусочек (напр. имя переменной) в таком случае код получается с синим фоном (где синий фон, скорее за все это выделение). баг это или фича я не знаю :)
Всё ещё ищете ответ? Посмотрите другие вопросы с метками java ms-word или задайте свой вопрос.
Похожие
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Site design / logo © 2022 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2022.5.6.42057
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Стоит задача формирования отчета в виде документа MS Word (.docx). Сам документ должен содержать заголовок и таблицу из нескольких столбцов.
Для реализации наткнулся на Apache POI. В прицнипе, все просто:
Но! Уж очень он тяжеловесный, для такой простой задачи придется тащить
А это где-то 10Мб!
Вопрос - есть ли более легковесное решение? На выходе нужен .docx файл, содержащий табличку.
4 ответа 4
Есть еще один вариант, без сторонних библиотек.
Документ docx (Office Open XML) представляет собой набор XML-файлов в zip-архиве. Имея это в виду, вполне можно средствами XSLT-преобразований сгенерировать из шаблона готовый отчет.
PS. Если у вас нет жестких внешних ограничений, 10 МБ - не тот размер из-за которого стоит паниковать.
Есть, минимум, два пути. Работать с Word через COM. Но, тогда программа будет работать только под Windows. Как вариант, можно ещё посмотреть в сторону WordPrecessing. Но получится сделать то, что Вы хотите или нет, не уверен.
Если файл с полностью фиксированной разметкой, решением для бедных будет набить шаблон прямо в ворде типа такого:
Сохраняете его в .docx и добавляете в ресурсы своего приложения. Файл с картинки весит 10Kb. Затем в процессе выполнения программы распаковываете его как zip-архив (например, с помощью стандартного ZipFile ), там есть файл word/document.xml , в котором по факту всё содержимое. Читаете его в память (в кодировке UTF-8) и делаете поиск с заменой, заменяя всякие >> на произвольное содержимое (не забудьте, что надо эскейпить в XML < , >и & ). Генерируете новый zip-файл с расширением .docx (можно использовать стандартный ZipOutputStream ). Туда записываете изменённый word/document.xml , остальные файлы копируете из ресурсного зипа без изменений.
Если требуются структурные изменения, можно генерировать document.xml с помощью DOM или XSLT. В принципе в таком варианте тоже ничего сложного.
Мне нужно отформатировать код Java, чтобы поместить его в документ Word. Существуют ли какие-либо программы, которые будут делать это с подсветкой ключевых слов и т. д.?
4 ответа
Когда я копирую/вставляю из своей IDE (Eclipse), форматирование приходит на помощь.
Вы, вероятно, захотите сначала отключить «Отметить вхождения».
Хм. У меня это не работает, но я на OS X. Надо будет попробовать на Windows. В идеале я хотел бы что-то, что может делать это для всего проекта, чтобы мне не приходилось копировать и вставлять каждый файл. Есть предложения?
Это поздний ответ, но, поскольку это довольно конкретное требование, я все равно опубликую свой комментарий.
Вы можете сделать это программно с помощью Docmosis, предполагая, что вы хотите, чтобы программа работала на Java (а не просто отображала Java в документах). ) и может установить OpenOffice там, где работает программа. Процесс будет таким:
- Создайте файл doc или odt, который будет действовать как шаблон (устанавливая шрифты, положение, таблицы и т. д.) и будет иметь заполнитель для того места, куда вы хотите вставить пример кода.
- Добавьте docmosis в свой проект Java и напишите код для инициализации Docmosis, зарегистрируйте шаблон, а затем визуализируйте документ с выбранным кодом Java.
- В настоящее время Docmosis FieldRenderers может подчеркивать или выделять данные курсивом по мере их поступления, но рендеринг в настоящее время применяется ко всему полю. Таким образом, это не позволит вам иметь одно поле для всего вашего java-текста и выделять слова по отдельности, но есть несколько других приемов, которые вы могли бы использовать для получения полезных/интересных результатов (например, разбить ваши данные на отдельные поля и позволить Docmosis отображать поля по-разному).
Текст "java code", указанный вами как данные, будет вставлен в ваш шаблон с использованием свойств шрифта и макета в шаблоне. Средство визуализации будет иметь возможность переопределить определенное форматирование.
Вы можете просто скопировать и вставить его в документ Word. Я также использую OS X. Я просто отлично работаю. Выкладываю скрин как это выглядит в word.
Это надстройка Office. Вы можете выбрать несколько тем, включить/выключить нумерацию строк/выделить строки в прямоугольниках. Он позволяет выбрать стиль кодирования и имеет кнопку быстрого форматирования. Довольно аккуратно.
кто-нибудь знает способ для отображения кода в документах Microsoft Word, который сохраняет окраску и форматирование? Предпочтительно, чтобы метод также был ненавязчивым и простым в обновлении.
Я попытался включить код в качестве обычного текста, который выглядит ужасно и мешает при редактировании обычного текста. Я также попытался вставить объекты, документ WordPad и текстовое поле в документ, а затем поместить код внутри этих объектов. Код выглядит намного лучше и его легче избежать при редактировании остальной части текста. Однако эти объекты могут охватывать только одну страницу, что делает редактирование кошмаром, когда необходимо добавить несколько страниц кода.
наконец, я знаю, что есть гораздо лучшие редакторы/форматы, которые не имеют проблем с этим, но я застрял в работе с MS word.
вот лучший способ, для меня, добавить код внутри word:
- перейдите на вкладку" вставить", нажмите кнопку" объект " (она находится справа)
- выберите "текст OpenDocument", который откроет новый встроенный документ word
- скопируйте и вставьте код из Visual Studio / Eclipse внутри этой встроенной страницы word
- сохранить и закрыть
результат выглядит очень красиво. Вот преимущества этого метода:
- в код сохраняет свой оригинальный макет и цвета
- код отделен от остальной части документа, как если бы это было изображение или диаграмма
- орфографические ошибки не будут выделены в коде (это круто !)
и это занимает всего несколько секунд.
скачать и установить Блокнот++ и сделать следующее:
вставьте код в окно;
Выберите язык программирования из меню язык;
выбрать текст для копирования;
щелкните правой кнопкой мыши и выберите команды плагина ->копировать текст с синтаксисом Выделение;
вставить его в MS Word и вы хорошо идти!
обновление 29/06/2013:
Notepad++ имеет плагин под названием "NppExport" (поставляется с предустановленной), который позволяет копировать в RTF, HTML и все. Он позволяет использовать десятки языков, в то время как вышеупомянутые IDE ограничены несколькими (без других плагинов).
Я использую копирование всех форматов в буфер обмена и "вставить как HTML " в MS word.
Код Addin теперь доступен в Office Addins с Office 365 ! Просто выберите код и нажмите преобразовать его, и он преобразует текст кода в форматированный цветовой код с номерами строк .
Немного Радоваться!
результат выглядит так:
Как вы можете видеть, это та же подсветка синтаксиса, что и при переполнении стека, что довольно удивительно.
при переполнении стека
- перейти Задать Вопрос (предпочтительно с хром)
- вставить код и добавить Language тега (например, Java), чтобы получить синтаксис hightlighting
- копировать код из preview
- вставить > таблица > 1x1
- вставить код
- Дизайн Таблицы > Границы > Нет Границы
- выберите код > изменить > найти > заменить
Поиск Документа ^p (Знак Абзаца) Заменить На ^l (Ручной Разрыв Строки)
(Это необходимо для удаления пробелов между некоторыми строками) - снова выберите код > обзор > язык > проверка "не проверять орфографию или грамматику"
- наконец, добавьте заголовок, используя ссылки > вставить заголовок > новая метка > назовите его "листинг" или sth
пример кода спасибо этот парень
Я набираю свой код в Visual Studio, а затем копирую-вставляю в word. он сохраняет цвета.
просто скопируйте сгенерированный код и вставьте его в программное обеспечение для редактирования word. До сих пор я пробовал это на MS Word и WPS Writer, работает очень хорошо. Не играет хорошо с Firefox, но отлично работает в Chrome (и IE тоже, но кто хочет это использовать).
одним из основных преимуществ является то, что, в отличие от надстройки формата кода для Word, она не возиться с вашим кодом, и уважает синтаксис различных языков. Я пробовал много других вариантов, предложенных в другом ответе, но я нашел этот наиболее эффективным (быстрый и действительно эффективное).
существует также другой инструмент onlinz, указанный в другом ответе (markup.su) но я нахожу выход planetB более элегантным (хотя и менее универсальным).
вход :
выход :
когда я это сделал, я широко использовал стили. Это очень помогает.
то, что я делаю, это создать стиль абзаца (возможно, называемый" Code Example " или что-то в этом роде), который использует моноширинный шрифт, тщательно выбранные вкладки, очень светло-серый фон, тонкую черную границу выше и ниже (что помогает видимости много) и с орфографией выключен. Я также убедиться, что в строке и между абзацами устанавливаются правильно. Затем я создаю дополнительные стили символов сверху (например,, " Comment "," String "," Keyword "," Function Name Decl "," Variable Name Decl "), который я накладываю сверху; те устанавливают цвет и является ли текст полужирным/курсивом. Затем довольно просто пройти и пометить вставленный пример как код, и он выйдет очень хорошо, и это хорошо работает для коротких фрагментов. Длинные куски кода, вероятно, не должны быть в чем-то, что собирается ехать на мертвое дерево. :-)
преимущество делать его таким образом что легко приспособиться к какой бы код вы ни делали; вам не нужно полагаться на какую-то IDE, чтобы выяснить, что происходит для вас. (Главная проблема? Печатные страницы обычно не так широки, как окна редактора, поэтому упаковка будет сосать. )
попробуйте определить стиль под названием " Код " и сделать его использовать небольшой шрифт фиксированной ширины, он должен выглядеть лучше.
использовать CTRL + пробел для сброса стиля.
может быть, это слишком просто, но вы пытались вставить свой код и установить шрифт на нем, чтобы курьер новый?
скопируйте текст из Окно предварительного просмотра, а затем в Word перейдите к Insert - > Textbox, вставьте предварительный просмотр с веб-сайта, выделите весь текст, а затем отключить проверку орфографии для текстового поля.
вот как выглядит код, наконец.
Если вы используете Возвышенное Текст, вы можете скопировать код из Sublime в MS Word, сохранив подсветку синтаксиса.
установить пакет под названием SublimeHighlight.
в Sublime, используя курсор, выберите код, который вы хотите скопировать, щелкните его правой кнопкой мыши, выберите "Копировать как rtf" и вставьте в MS Word.
Это немного косвенно, но работает очень хорошо. Получить LiveWriter и установить этот плагин:
Он отлично выглядит и может включать номера строк. Он также охватывает страницы прилично.
по моему опыту copy-paste из eclipse и Notepad++ работает непосредственно с word.
по какой-то причине у меня возникла проблема с файлом, который не сохранил окраску. Я сделал новый .java-файл, скопируйте-вставьте код в это, затем скопируйте-вставьте в word, и это сработало.
Как сказали другие ребята, создайте новый стиль абзаца. Что я делаю, так это использую моно-разнесенный шрифт, такой как courier new, небольшой размер, близкий к 8px для шрифтов, один разнесенный без пространства между абзацами, сделайте табуляции небольшой (0,5 см,1 см. 5 см), поместите простую границу строки вокруг текста и отключите проверки грамматики. Таким образом, я достиг линейного торможения eclipse, поэтому мне больше ничего не нужно делать.
надеюсь, что помогла ;)
используйте моноширинный шрифт, например Консоль Lucida,, который поставляется с Windows. Если вырезать / вставить из Visual Studio или что-то, что поддерживает подсветку синтаксиса, часто можно сохранить цветовую схему подсветки синтаксиса.
Vim имеет отличную функцию, которая преобразует код в формат HTML, сохраняя подсветку синтаксиса, стиль шрифта, цвет фона и даже номера строк. Запустить :TOhtml и vim создает новый буфер, содержащий разметку html.
затем откройте этот html-файл в веб-браузере и скопируйте/вставьте все, что он отобразил в Word. Vim советы wiki имеет дополнительная информация.
Это самый простой подход, которому я следую. Рассмотрим, что я хочу вставить java-код.
вставить предварительный код, полученный от шага 2 до MS word. Наконец, это будет выглядеть так
на самом деле нет чистого способа сделать это, и он все еще может выглядеть подозрительно на основе ваших точных настроек стиля.
Что вы можете попытаться сделать, это сначала запустить преобразование кода в HTML (есть много программ, которые это делают), а затем попытаться открыть HTML-файл с помощью word, который, надеюсь, предоставит вам форматированный и красивый код, а затем скопировать и вставить его в документ.
вы также можете использовать SciTE для вставки кода, если вы не хотите устанавливать тяжелые IDEs, а затем загружать плагины для всего кода, который вы делаете. Просто выберите язык из меню язык, введите код, высокий свет код, выберите Редактировать- > Копировать как RTF, вставить в слово с форматированием (по умолчанию вставить).
Я использую Word 2010, и мне нравится копировать и вставлять из GitHub gist. Только не забудьте сохранить исходное форматирование!
затем я меняю шрифт на DejaVu Sans Mono.
вы можете выбрать копирование С или без нумерации.
копирование в Eclipse и вставка его в Word также является еще одним вариантом.
Лучшая презентация для кода в документах-шрифт фиксированной ширины (как он должен отображаться в IDE), с слабым, затененным фоном или светлой границей, чтобы отличить блок от другого текста.
если его исходный код Java скопируйте его в Visual Studio, а затем скопируйте его обратно в Word.
Если вы используете Android Studio, вы можете просто скопировать и вставить, и код будет сохранен и цветах, а также. Достаточно просто!
Я также искал его и в конечном итоге создал что-то для моего отображения кода. Вот хороший способ:
- создайте прямоугольную форму и поместите текст внутри.
- измените шрифт на Consolas и размер ~10.
- измените шрифт текста на серый почти черный (серый 25%, более темный 75%)
- используйте более темные цвета, чтобы выделить текст, если это необходимо, и выберите один контур.
просто вставьте код в MS Words, выберите его- > затем щелкните правой кнопкой мыши - > нумерация. В этом случае MS Word будет интерпретировать ваш код как маркер / нумерованный список.
Если вы используете TextMate (в OS X), используйте команду "копировать как rtf". Он поместит красиво напечатанный текст в буфер обмена.
оттуда вы можете вставить в word или что-нибудь еще.
из Powershell ISE скопировать и вставить слово.
То же самое с Visual Studio.
Если у вас уже есть документ, созданный с большим количеством фрагментов кода в нем, и вы мчитесь против времени (как я, к сожалению). Сохраните файл как .doc в противоположность .docx и вуаля! Работать на меня. Фу!
Примечание: очевидно, что ваш документ не может иметь причудливых функций из > word 2007.
примечание 2: размер файла становится больше, если это важно для вас.
самое простое решение, по крайней мере для меня, - вставить код в документ, выделить его, а затем перейти к:
главная -> стили -> > -> код
Это имеет то преимущество, что код теперь доступен для поиска в документе (в отличие от решения gargamel), а также может форматировать код, который является несколькими страницами.
Читайте также: