Programm um ganzes Projekt zu drucken

Hi,
hab in letzter Zeit ein paar mal das Problem gehabt, dass ich ein ganzes Html oder C++ Projekt, dass über viele Dateien verteilt war, drucken mußte. Und jede Datei zu öffnen und den Inhalt in zB ein Open-Office-Dokument zu kopieren ist doch bestimmt nur die zweitbeste Lösung....
Kennt von euch zufällig irgendjemand ein Programm, in dem man ein Verzeichnis auswählen kann, und dass dann alle darin befindlichen Dateien in eine schreibt? Möglichst mit Dateinamen als Überschriften, und durchgehender Seitennummerierung. Oder sollte es sowas gar nicht geben?
Viele Grüße, Daniel
 
Mir faellt da gerade nichts ein, aber du koenntest doch einfach ein kleines Script in der Sprache deiner Wahl schreiben, dass alle Dateien im Verzeichnis einliest und mit Dateinamen als Ueberschrift, am einfachsten in HTML ausgibt. Das kannst du dann drucken, wenn du noch ein kleines Stylesheet dazu machst.
 
Hab da eben ein Python Script geschrieben. Benötigt

Python 2.4 mit Windows Extensions:
http://sourceforge.net/projects/pywin32/

wird aufgerufen mit: python filename.py C:"\meinprojekt" *.php,*.html,*.css
welches dann alle dateien unter C:\meinprojekt druckt die auf die angegebene
Dateiendungen passen.

War jetzt eben Quick and Dirty. Funktioniert bei mir, aber keine Garantie drauf ;)


Python:
# rekursiev Dateien ausdrucken
# by Christian Fein (2006)

import sys, os, re
from win32print import *


class Filecatcher:
    
    def __init__(self,folder):
        self.patterns = []  
        self.filesCatched = []
        self.folder = folder       
    
    def catchFiles(self,fileendings):
        self.pattern = self.createPatterns(fileendings)
        test = re.compile('.*html$')
        for root, dirs, files in os.walk(self.folder):
            for file in files:
                if self.checkFile(root,file):
                    self.filesCatched.append(root+"\\"+file)
        return self.filesCatched
     
    def checkFile(self,root,file):   
        for pattern in self.patterns:
            if pattern.match(file):
                return True
        
        
    def createPatterns(self,fileendings):
        x = fileendings.split(",")
        for i in x:
            patstr = ".*%s$" % i.split("*.")[1]            
            self.patterns.append(re.compile(patstr))
     
def printFiles(files ):
        for file in files:
            printer_name = GetDefaultPrinter()
            hPrinter = OpenPrinter(printer_name)
            print hPrinter
            try:
                text = ""
                hfile = open(file)
                for line in hfile.readlines():
                    text+=line
            except: 
                print "error beim drucken"
                return 
            try:
                hjob = StartDocPrinter(hPrinter,1,(file,None,None))
                try:
                    WritePrinter(hPrinter,text)
                finally:
                    EndDocPrinter(hPrinter)
            finally:
                ClosePrinter(hPrinter)
    
    


def usage():
    print "usage: python.py  [folder] [filepatter]"
    sys.exit()
 
if __name__ == "__main__":        
    if len(sys.argv) < 2:
        usage()
    folder = sys.argv[1]
    filepattern = sys.argv[2]
    catcher = Filecatcher(folder)    
    printFiles(catcher.catchFiles(filepattern))
 
Zurück