我必须打印一个 java 项目的整个源代码。 最终版本应如下所示:Eclipse: File -> Print。 但使用此功能一次只能打印一个文件。
有没有办法用一个命令打印(或创建一个 pdf/rtf)整个项目(所有 *.java、*.xml、... 文件)?
我在 windows xp sp3 上使用 eclipse galileo
编辑:对于每个类/文件,页面应该(或多或少)如下所示:
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
解决方案:
最佳答案
如果您不介意安装 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 从 enscript 获取 PostScript 输出并将其转换为可以打印的 PDF。
关于java - 打印整个java项目的源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1921178/