Posted to tcl by miguel at Sat Apr 23 16:00:50 GMT 2011view pretty

set inputFname /foo/bar/sum.pdf
set outputFname /foo/bar/sum2.pdf
set indicesFname /foo/bar/idxes
set chunkSize 4000
set pagemarker \f; #or whatever it is

set f [open $idxes]
set idxdata [read $f]
close $f
# build a list of indices and replacements in idxlist/idxrepl
set idxlist [....]
set idxrepl [....]
unset idxdata

set in [open $inputFname]
set out [open $outputFname w]

set inbuf {}
set i 0
set idxused 0

while {![eof $in]} {
    append inbuf [read $in $chunkSize]
    set inlist [split $inbuf $pagemarker]
    if {![eof $in]} {
	set inbuf [lindex $inlist end]
	set inlist [lrange $inlist 0 end-1]
    } else {
	set pagemarker {}
    }

    foreach page $inlist {
	while 1 {
	    set found [regsub [lindex $idxlist $i] $page [lindex $idxrepl $i] page]
	    if {$found} {
		set idxused 1
	    } elseif {$idxused} {
		incr i
		set idxused 0
		continue
	    }
	    puts -nonewline $out $page$pagemarker
	    break
	}
    }
}

Comments

Posted by miguel at Sat Apr 23 16:03:08 GMT 2011 [text] [code]

untested not suntested ...