我必须打印Java项目的整个源代码。最终版本应如下所示: Eclipse:File- > Print。但是使用此功能,您一次只能打印一个文件。
有没有一种方法可以使用一个命令打印(或创建pdf / rtf)整个项目(所有 .java,。xml,…文件)?
我在Windows XP SP3上使用Eclipse Galileo
编辑: 对于每个类/文件,页面应(或多或少)如下所示:
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 -将输出发送到standard-out(通过管道将其输出到 ps2pdf )。
-r
-2
--file- align=2
--highlight
--line-numbers
-o -
find 生成文件列表;在这里,我告诉它在当前目录下找到所有Java文件。输出作为参数传递给 enscript ; 对于“ 50-100个文件”,您应该可以,但可能需要阅读有关 xargs的信息 。您可以删除-name参数以生成所有文件的列表,或者添加多个-name参数以将更多文件类型添加到列表;我不会采用“所有文件”方法,因为那样您将获得源代码控制文件。
-name
ps2pdf 从 enscript 获取PostScript输出,并将其转换为PDF,然后可以打印。