2012-01-06 13 views
5

Ho un PDF del libro scansionato, le immagini sono in formato JBIG2 (B & W). Mi piacerebbe convertirlo in un PDF vettoriale, che posso fare facilmente estraendo le immagini e convertendole in istruzioni grafiche vettoriali PDF con Potrace.Comprimere/ottimizzare i vettori in PDF

La ragione di ciò è che voglio che il PDF venga visualizzato facilmente e rapidamente su un dispositivo di ebook reader, come ad esempio un Kindle. Con JBIG2 non lo sta facendo molto bene. A seconda delle impostazioni, Kindle non è in grado di visualizzare il PDF e anche con quello corretto richiede molto tempo per il rendering di ciascuna pagina. Con un PDF vettoriale le prestazioni sono molto migliori e il rendering molto nitido.

Il problema è che il PDF risultante è gigantesco in file. Anche con gli stream gz, il massimo è di 300 KB per pagina (le immagini originali di JBIG2 erano 30 KB per pagina).

C'è un modo per ottimizzare la grafica vettoriale in modo che la dimensione del file sia molto inferiore?

Ecco un segmento delle istruzioni di disegno vettoriale:

0.100000 0.000000 0.000000 0.100000 0.000000 0.000000 cm 
0 g 
8277 29404 m 
8263 29390 8270 29370 8289 29370 c 
8335 29370 8340 29361 8340 29284 c 
8340 29220 8338 29210 8323 29210 c 
8194 29207 8141 29208 8132 29214 c 
8125 29218 8120 29248 8120 29289 c 
8120 29356 8121 29358 8150 29370 c 
8201 29391 8184 29400 8095 29400 c 
8004 29400 7986 29388 8033 29357 c 
8056 29342 8057 29338 8057 29180 c 
8058 29018 l 
8029 29008 l 
8012 29002 8001 28993 8003 28986 c 
h 
f 

avrei pensato che i numeri potrebbero essere compressi giù molto facilmente, ma a quanto pare no. Una pagina è 800 KB non compressa (come sopra) e 300 KB gzpresspressa. Avrei pensato che il rapporto di compressione potrebbe essere molto migliore, considerando come le istruzioni siano tutte numeri in intervalli simili.

+1

Hai provato a salvare nuovamente l'immagine in CCITT-G4? Dovrebbe raggiungere circa il 10-15% in più di JBIG e essere facilmente visibile su tutti gli spettatori. – BitBank

risposta

1

Ho paura che non si possa fare molto a riguardo.

Ovviamente, si potrebbe provare a utilizzare la compressione LZW su flussi di pagine PDF (anziché su Deflate) ma probabilmente non farà molta differenza.

Un altro suggerimento:

  • immagine di origine Smooth il più possibile/rimuovere il maggior numero di dettagli possibile. Questo potrebbe rendere meno curve (cioè meno dati) durante la conversione.
  • Provare a ottimizzare i valori nel flusso di pagine PDF. Ad esempio, potresti provare a utilizzare sofisticate combinazioni di operatori di ridimensionamento/traduzione e modifiche ai dati. L'obiettivo qui è ridurre la lunghezza degli operandi.

Ad esempio, si potrebbe provare a dividere tutti gli operandi (utilizzando numero intero, non divisione in virgola mobile), ad esempio 100, e aggiungere il ridimensionamento prima del primo operatore. Questo approccio, tuttavia, peggiora molto probabilmente la qualità visiva.

E, naturalmente, se avete intenzione di fare questo solo per una manciata di file, direi che non ne vale la pena.

+0

Molto più di una manciata di file, ma sì, capisco il tuo punto. LZW fa anche peggio di Deflate. La mia altra opzione è dividere l'immagine in segmenti e provare a rilevare le somiglianze, implementando in modo efficace la mia propria codifica simbolica, usando i form xobject. Ho già fatto qualcosa del genere, ma qualcosa tende ad andare male da qualche parte. – Alasdair