Posted to tcl by miguel at Sat Apr 23 16:18:25 GMT 2011view raw
- 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