Распечатать исходный код всего проекта Java - PullRequest
27 голосов
/ 17 декабря 2009

Я должен напечатать весь исходный код java-проекта. Окончательная версия должна выглядеть следующим образом: Eclipse: File -> Print . Но с помощью этой функции вы можете распечатать только один файл одновременно.

Есть ли способ напечатать (или создать pdf / rtf) весь проект (все файлы * .java, * .xml, ...) одной командой?

Я использую Eclipse Galileo на Windows XP SP3


РЕДАКТИРОВАТЬ: Для каждого класса / файла страница должна (более или менее) выглядеть следующим образом:

C: \ .. \ .. \ .. \ LibraryExtractor.java

1 package utils.libraries;
2
3 import java.io.File;
9
10 /**
11 * @
12 * @
13 * @
14 */
15 public class LibraryExtractor {
16
17 /**
18 * 
19 * 
20 *
21 * 
22 * 
23 *
24 *
25 */
26 public static void extranctLibrary(String library, File targetFile) throws
IOException, URISyntaxException {
27 targetFile.getParentFile().mkdirs();
28 if (!targetFile.exists())
29 targetFile.createNewFile();
30
31 ClassLoader classLoader = LibraryExtractor.class.getClassLoader();
32 InputStream in = classLoader.getResourceAsStream(library);
33 OutputStream out = new FileOutputStream(targetFile);
34
35 byte[] buf = new byte[1024];
36 int len;
37
38 while ((len = in.read(buf)) > 0)
39 out.write(buf, 0, len);
40
41 in.close();
42 out.close();
43 }
44 }
45

РЕШЕНИЕ:

  1. enscript (с Cygwin)

  2. Java2Html Eclipse-Plugin (только работает с Европой)

Ответы [ 8 ]

57 голосов
/ 06 января 2010

Если вы не против установить Cygwin или запустить в Linux, следующая команда сделает то, что вы хотите:

enscript -r -2 --file-align=2 --highlight --line-numbers -o - `find . -name '*.java'` | ps2pdf - files.pdf

enscript - программа для преобразования текстовых файлов в различные выходные форматы; По умолчанию используется PostScript, но вы также можете создавать HTML, RTF и некоторые другие. Опция -r говорит, что печатать в альбомной ориентации, -2 - это два столбца на страницу (сохранять деревья), --file-align=2 говорит, что каждый новый файл должен начинаться на своей физической странице, --highlight включает подсветку синтаксиса для конкретного языка (он попытается выяснить язык, или вы можете указать «java»), --line-numbers должно быть очевидным, а -o - отправляет вывод стандартному выводу (где он передается по каналу ps2pdf ) .

find генерирует список файлов; здесь я говорю, чтобы найти все файлы Java в текущем каталоге. Вывод передается в качестве аргументов enscript ; для "50-100 файлов" у вас должно быть все в порядке, но вам может потребоваться прочитать о xargs . Вы можете избавиться от аргумента -name, чтобы создать список всех файлов, или добавить несколько аргументов -name, чтобы добавить больше типов файлов в список; Я бы не стал использовать подход «все файлы», потому что тогда вы получите файлы управления исходным кодом.

ps2pdf берет вывод PostScript из enscript и преобразует его в PDF, который можно распечатать.

6 голосов
/ 10 января 2010

Я использовал Java2Html из Eclipse в прошлом. Посмотрите, подходит ли вам это.

6 голосов
/ 06 января 2010

Если вы можете позволить себе потратить $ 50 на покупку Ultraedit, откройте все файлы и распечатайте его ...

Особенности ультраредакта о печати включает в себя:

  • Предварительный просмотр
  • Печать номеров строк
  • Команда печати не печатает скрытые строки
  • Заголовки / нижние колонтитулы (с командами выравнивания), поля и разрывы страниц
  • Печать подсветки синтаксиса в цвете
  • Печать 2 страниц на одном листе в альбомном или портретном режимах
  • Раздельный выбор шрифта для дисплея и принтера (поддерживает все установленные шрифты, включая шрифты True Type)
  • Печать всех открытых файлов
3 голосов
/ 17 декабря 2009

Я не думаю, что вы можете сделать это в Eclipse (конечно, вы могли бы написать плагин, который делает это).

Если вы используете Ant в качестве инструмента сборки, вы можете использовать задачу concat, а затем распечатать полученный файл

<concat destfile="${concat.src.dir}/concat.txt" force="no">
    <filelist dir="${src.dir}" includes="**/*.java **/*.xml" />
</concat>
1 голос
/ 01 апреля 2015

http://sourceforge.net/projects/javasrc2pdf/?source=typ_redirect

При этом создаются все файлы PDF с достаточно хорошей подсветкой синтаксиса, но все они в отдельных файлах. Но есть много способов объединить PDF-файлы там

1 голос
/ 06 января 2010

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

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

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

1 голос
/ 06 января 2010

Опция, которая выглядит причудливо, - это использовать vim в пакетном режиме, чтобы сгенерировать кучу цветных HTML-файлов, а затем распечатать, перетащив их все на принтер (я знаю, что это можно сделать, некоторое время назад коллега напечатал всю J2SE API, и я надеюсь, что она не делала это постранично, xD).

find -name "*.java" -exec vim '+set nu' +TOhtml +wq +q '{}' \;
0 голосов
/ 06 января 2010

Я бы использовал фрагменты с включенным бельем, как описано в http://pygments.org/docs/formatters/

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