Posted to tcl by miguel at Sat Apr 23 16:18:25 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 set done 0 while {!$done} { 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 {} } set re ([lindex $idxlist $i])sh foreach page $inlist { while 1 { if {!$done} { set found [regsub $re $page ([lindex $idxrepl $i])sh page] if {$found} { set idxused 1 } elseif {$idxused} { if {[incr i] == [llength $idxlist]} { set done 1 } else { set re ([lindex $idxlist $i])sh set idxused 0 } continue } } puts -nonewline $out $page$pagemarker break } } } fcopy $in $out