Discussione:
Montare due file: uno pagine pari e uno pagine dispari
(troppo vecchio per rispondere)
c***@gmail.com
2009-03-06 10:30:46 UTC
Permalink
Salve,
ho una difficoltà che non riesco in alcun modo a superare: ho due
files .doc di circa 100 pagine, l'uno; uno contiene le pagine pari di
un documento, uno le dispari. come faccio (non manualmente
ovviamente!) a "comporre" i due files per averne uno solo? AIUTO!
Giovanni Zezza
2009-03-06 12:04:44 UTC
Permalink
Post by c***@gmail.com
ho una difficoltà che non riesco in alcun modo a superare: ho due
files .doc di circa 100 pagine, l'uno; uno contiene le pagine pari di
un documento, uno le dispari. come faccio (non manualmente
ovviamente!) a "comporre" i due files per averne uno solo? AIUTO!
Una domanda interessante è anche come hai fatto a smontarli. Non è banale,
perché le pagine possono terminare anche in mezzo ad un paragrafo, e
spezzarlo può creare problemi. In particolare, non è detto che le pagine
divise restino distinte così come erano nell'originale.

Anche per la ricomposizione si danno considerazioni analoghe. In generale,
quindi, è difficile costruire una soluzione automatica al problema. Questo
genere di cose è meglio farle in postproduzione, per esempio su un
documento pdf o postscript.

Presumendo di partire da due documenti particolarmente appropriati per
questa operazione, si potrebbe tentare con qualcosa del genere del codice
seguente, con l'avvertenza comunque di controllare bene il documento
risultante.

In particolare non sono sicurissimo di aver gestito correttamente quello
che avviene alla fine dei due documenti.

Public Sub ricomponi_doc()
alterna_pagine "dispari.doc", "pari.doc"
End Sub

Public Sub alterna_pagine(dispari As String, pari As String)
Dim Pagina_dispari As Range
Dim Pagina_pari As Range
Dim brano As Range
Dim nome As String
Dim numero As Integer
Dim inizio_dispari As Long
Dim inizio_pari As Long
Dim fine_dispari As Long
Dim fine_pari As Long
Dim doc_pari As Document
Dim doc_dispari As Document
Dim doc_unione As Document
numero = 1
Set doc_dispari = Documents.Open(dispari)
Set doc_pari = Documents.Open(pari)
Set doc_unione = Documents.Add

Set brano = doc_unione.Range(0, 0)

Set Pagina_dispari = doc_dispari.Range(0, 0)
inizio_dispari = Pagina_dispari.start
fine_dispari = Pagina_dispari.GoToNext(wdGoToPage).start

Set Pagina_pari = doc_pari.Range(0, 0)
inizio_pari = Pagina_pari.start
fine_pari = Pagina_pari.GoToNext(wdGoToPage).start

While inizio_dispari <> fine_dispari
Pagina_dispari.SetRange inizio_dispari, fine_dispari
Pagina_dispari.Copy
brano.Collapse wdCollapseEnd
brano.Paste

Pagina_pari.SetRange inizio_pari, fine_pari
Pagina_pari.Copy
brano.Collapse wdCollapseEnd
brano.Paste

Pagina_dispari.SetRange fine_dispari, fine_dispari
inizio_dispari = fine_dispari
fine_dispari = Pagina_dispari.GoToNext(wdGoToPage).start

Pagina_pari.SetRange fine_pari, fine_pari
inizio_pari = fine_pari
fine_pari = Pagina_pari.GoToNext(wdGoToPage).start

Wend

Pagina_dispari.EndOf wdStory, wdExtend
Pagina_dispari.Copy
brano.Collapse wdCollapseEnd
brano.Paste
End Sub


Ciao.
c***@gmail.com
2009-03-06 15:26:57 UTC
Permalink
Post by Giovanni Zezza
Post by c***@gmail.com
ho una difficoltà che non riesco in alcun modo a superare: ho due
files .doc di circa 100 pagine, l'uno; uno contiene le pagine pari di
un documento, uno le dispari. come faccio (non manualmente
ovviamente!) a "comporre" i due files per averne uno solo? AIUTO!
Una domanda interessante è anche come hai fatto a smontarli. Non è banale,
perché le pagine possono terminare anche in mezzo ad un paragrafo, e
spezzarlo può creare problemi. In particolare, non è detto che le pagine
divise restino distinte così come erano nell'originale.
Anche per la ricomposizione si danno considerazioni analoghe. In generale,
quindi, è difficile costruire una soluzione automatica al problema. Questo
genere di cose è meglio farle in postproduzione, per esempio su un
documento pdf o postscript.
Presumendo di partire da due documenti particolarmente appropriati per
questa operazione, si potrebbe tentare con qualcosa del genere del codice
seguente, con l'avvertenza comunque di controllare bene il documento
risultante.
In particolare non sono sicurissimo di aver gestito correttamente quello
che avviene alla fine dei due documenti.
    Public Sub ricomponi_doc()
    alterna_pagine "dispari.doc", "pari.doc"
    End Sub
    Public Sub alterna_pagine(dispari As String, pari As String)
    Dim Pagina_dispari As Range
    Dim Pagina_pari As Range
    Dim brano As Range
    Dim nome As String
    Dim numero As Integer
    Dim inizio_dispari As Long
    Dim inizio_pari As Long
    Dim fine_dispari As Long
    Dim fine_pari As Long
    Dim doc_pari As Document
    Dim doc_dispari As Document
    Dim doc_unione As Document
    numero = 1
    Set doc_dispari = Documents.Open(dispari)
    Set doc_pari = Documents.Open(pari)
    Set doc_unione = Documents.Add
    Set brano = doc_unione.Range(0, 0)
    Set Pagina_dispari = doc_dispari.Range(0, 0)
    inizio_dispari = Pagina_dispari.start
    fine_dispari = Pagina_dispari.GoToNext(wdGoToPage).start
    Set Pagina_pari = doc_pari.Range(0, 0)
    inizio_pari = Pagina_pari.start
    fine_pari = Pagina_pari.GoToNext(wdGoToPage).start
    While inizio_dispari <> fine_dispari
        Pagina_dispari.SetRange inizio_dispari, fine_dispari
        Pagina_dispari.Copy
        brano.Collapse wdCollapseEnd
        brano.Paste
        Pagina_pari.SetRange inizio_pari, fine_pari
        Pagina_pari.Copy
        brano.Collapse wdCollapseEnd
        brano.Paste
        Pagina_dispari.SetRange fine_dispari, fine_dispari
        inizio_dispari = fine_dispari
        fine_dispari = Pagina_dispari.GoToNext(wdGoToPage).start
        Pagina_pari.SetRange fine_pari, fine_pari
        inizio_pari = fine_pari
        fine_pari = Pagina_pari.GoToNext(wdGoToPage).start
    Wend
    Pagina_dispari.EndOf wdStory, wdExtend
    Pagina_dispari.Copy
    brano.Collapse wdCollapseEnd
    brano.Paste
    End Sub
Ciao.
Innanzitutto grazie per la risposta! I due files provengono da una
scansione di un documento cartaceo fronte-retro, ho scandito prima le
pagine pari e poi le dispari. Adesso sono in Pdf (ma anche così ho il
problema di rimontarli in un unico file) ed in un secondo momento li
ho riconosciuti tramite OCR per salvarli in formato .doc
Le righe di codice che mi hai scritto dove devo metterle???
Giovanni Zezza
2009-03-06 16:16:52 UTC
Permalink
Post by c***@gmail.com
Innanzitutto grazie per la risposta! I due files provengono da una
scansione di un documento cartaceo fronte-retro, ho scandito prima le
pagine pari e poi le dispari. Adesso sono in Pdf (ma anche così ho il
problema di rimontarli in un unico file)
Non so, a questo punto, se sia l'approccio più adeguato per la situazione
che descrivi, comunque ci sono diverse utilità per manipolare documenti
pdf. Puoi provare a guardare MbtPdfAsm, PdfTk, Multivalent...
Post by c***@gmail.com
http://thierry.schmit.free.fr/spip/spip.php?rubrique7
http://www.pdfhacks.com/pdftk/
http://multivalent.sourceforge.net/
ed in un secondo momento li ho riconosciuti tramite OCR per salvarli in
formato .doc Le righe di codice che mi hai scritto dove devo metterle???
Nell'editor di visual basic di Word. La procedura assume che il nome dei
due documenti sia, rispettivamente, "dispari.doc" e "pari.doc"; aggiusterai
tu secondo le tue necessità.

Ciao.
Giovanni Zezza
2009-03-06 17:16:00 UTC
Permalink
Post by Giovanni Zezza
Nell'editor di visual basic di Word. La procedura assume che il nome dei
due documenti sia, rispettivamente, "dispari.doc" e "pari.doc"; aggiusterai
tu secondo le tue necessità.
Un ulteriore problema deriva dal fatto che non è detto che una pagina del
documento originale, riconosciuta con OCR, stia tutta in un'unica pagina
del documento di facciata a cui corrisponde (pari o dispari).

E' probabile però che l'OCR aggiunga un carattere di nuova pagina manuale,
al termine di ogni pagina scandita; se è così, l'identificazione
dell'intervallo da copiare andrebbe fatta ricercando tale carattere,
piuttosto che spostandosi di una pagina, come ho fatto sulla base delle tue
specifiche iniziali. Alcuni OCR danno la possibilità di salvare ogni pagina
in un nuovo documento; in questo modo le cose sarebbero molto più semplici.

Ciao.
BadAnimal
2009-03-09 10:47:41 UTC
Permalink
Post by c***@gmail.com
Innanzitutto grazie per la risposta! I due files provengono da una
scansione di un documento cartaceo fronte-retro, ho scandito prima le
pagine pari e poi le dispari. Adesso sono in Pdf (ma anche così ho il
problema di rimontarli in un unico file) ed in un secondo momento li
ho riconosciuti tramite OCR per salvarli in formato .doc
Non conviene unire i file PDF e poi fare riconoscere il documento
unito?
Giovanni Zezza
2009-03-09 12:03:47 UTC
Permalink
BadAnimal, nel messaggio
Post by BadAnimal
Non conviene unire i file PDF e poi fare riconoscere il documento
unito?
Sembra anche a me che possa essere tutto sommato la soluzione più semplice.

Con mbtpdfasm, si tratterebbe di scrivere e processare un file del genere:

dispari.pdf 1
pari.pdf 2
dispari.pdf 3
pari.pdf 4
dispari.pdf 5
pari.pdf 6
...

Ciao.
f***@gmail.com
2018-03-26 10:30:28 UTC
Permalink
Post by Giovanni Zezza
Post by c***@gmail.com
ho una difficoltà che non riesco in alcun modo a superare: ho due
files .doc di circa 100 pagine, l'uno; uno contiene le pagine pari di
un documento, uno le dispari. come faccio (non manualmente
ovviamente!) a "comporre" i due files per averne uno solo? AIUTO!
Una domanda interessante è anche come hai fatto a smontarli. Non è banale,
perché le pagine possono terminare anche in mezzo ad un paragrafo, e
spezzarlo può creare problemi. In particolare, non è detto che le pagine
divise restino distinte così come erano nell'originale.
Anche per la ricomposizione si danno considerazioni analoghe. In generale,
quindi, è difficile costruire una soluzione automatica al problema. Questo
genere di cose è meglio farle in postproduzione, per esempio su un
documento pdf o postscript.
Presumendo di partire da due documenti particolarmente appropriati per
questa operazione, si potrebbe tentare con qualcosa del genere del codice
seguente, con l'avvertenza comunque di controllare bene il documento
risultante.
In particolare non sono sicurissimo di aver gestito correttamente quello
che avviene alla fine dei due documenti.
Public Sub ricomponi_doc()
alterna_pagine "dispari.doc", "pari.doc"
End Sub
Public Sub alterna_pagine(dispari As String, pari As String)
Dim Pagina_dispari As Range
Dim Pagina_pari As Range
Dim brano As Range
Dim nome As String
Dim numero As Integer
Dim inizio_dispari As Long
Dim inizio_pari As Long
Dim fine_dispari As Long
Dim fine_pari As Long
Dim doc_pari As Document
Dim doc_dispari As Document
Dim doc_unione As Document
numero = 1
Set doc_dispari = Documents.Open(dispari)
Set doc_pari = Documents.Open(pari)
Set doc_unione = Documents.Add
Set brano = doc_unione.Range(0, 0)
Set Pagina_dispari = doc_dispari.Range(0, 0)
inizio_dispari = Pagina_dispari.start
fine_dispari = Pagina_dispari.GoToNext(wdGoToPage).start
Set Pagina_pari = doc_pari.Range(0, 0)
inizio_pari = Pagina_pari.start
fine_pari = Pagina_pari.GoToNext(wdGoToPage).start
While inizio_dispari <> fine_dispari
Pagina_dispari.SetRange inizio_dispari, fine_dispari
Pagina_dispari.Copy
brano.Collapse wdCollapseEnd
brano.Paste
Pagina_pari.SetRange inizio_pari, fine_pari
Pagina_pari.Copy
brano.Collapse wdCollapseEnd
brano.Paste
Pagina_dispari.SetRange fine_dispari, fine_dispari
inizio_dispari = fine_dispari
fine_dispari = Pagina_dispari.GoToNext(wdGoToPage).start
Pagina_pari.SetRange fine_pari, fine_pari
inizio_pari = fine_pari
fine_pari = Pagina_pari.GoToNext(wdGoToPage).start
Wend
Pagina_dispari.EndOf wdStory, wdExtend
Pagina_dispari.Copy
brano.Collapse wdCollapseEnd
brano.Paste
End Sub
Ciao.
Ciao,

ho un problema simile, ho usato il codice qui sopra, esegue correttamente il tutto, ma la formattazione dei caratteri viene completamente sballata. C'è un modo per rimediare? Grazie
Continua a leggere su narkive:
Loading...