2010-05-01 14 views
7

Questa è una domanda molto generale ma si basa su un problema specifico. Ho creato un'applicazione per lettore di file PDF per iPad e funziona benissimo tranne alcune pagine in formato PDF che fanno sempre crash dell'applicazione. Ora abbiamo scoperto che proprio le stesse pagine causavano il crash di Safari, così come avevo iniziato a sospettare che il problema fosse da qualche parte nel codice di rendering pdf di Apple.Quali elementi PDF potrebbero causare arresti anomali?

Da quanto ho potuto vedere, le pagine in crash fanno sì che le librerie di rendering inizino ad allocare memoria come matti fino a quando l'app non viene uccisa. Non ho nient'altro che mi aiuti a individuare ciò che fa scattare questo processo.

Non si verifica necessariamente con i documenti più grandi o con la maggior parte delle forme. In effetti, non abbiamo trovato alcun parametro che ci aiuti a prevedere quali pagine andranno in crash e quali no.

Ora abbiamo appena scoperto che l'esecuzione delle pagine tramite un programma consumer che consente di unire i documenti risolve il problema, ma non sono stato in grado di rilevare quale attributo o elemento è la chiave. Cambiare i documenti a mano non è un'opzione per noi nel lungo periodo. Abbiamo bisogno di eseguire un processo automatico sul nostro server.

Spero che qualcuno con una conoscenza più approfondita del formato di file PDF sia in grado di indicarmi in modo ragionevole la ricerca di caratteristiche del documento che potrebbero causare questo tipo di comportamento. Tutto quello che ho trovato finora è qualcosa sulle immagini di JBIG2, e non credo che ne abbiamo di quelle.

risposta

1

Stesso problema riscontrato con due PDF "speciali" che non è stato possibile eseguire su un'app per iPad o Safari per iPad. Nel mio caso, il problema è stato isolato con alcune sfumature semitrasparenti.

A proposito, la conversione del PDF in PostScript, e quindi di nuovo in PDF, sembra rimuovere gli elementi interni che PDFKit non piace. Il documento originale aveva una dimensione di 1,9 MB con un sacco di forme vettoriali, dopo il processo di conversione il file si ridusse di dimensioni a circa 600 KB e fu reso impeccabilmente su iPad.

+0

Grazie per queste informazioni. Quale programma/libreria hai usato per fare la conversione PS/PDF? Ho suggerito al mio cliente di usare Ghost Script per modificare i file, ma alla fine hanno fatto la loro soluzione. – Felixyz

+0

Nessun programma/libreria speciale open source. Ho usato Adobe Distiller 6.0 come era disponibile al lavoro. – soliosg

1

Non è la funzionalità PDF in sé ma il supporto per tale problema. È necessario separare il PDF e vedere ciò che contiene - puoi farlo in Acrobat 9.0 - c'è un articolo che mostra come puoi usarlo per vedere all'interno del PDF allo http://pdf.jpedal.org/java-pdf-blog/bid/10479/Viewing-PDF-objects

Ci hanno inviato alcuni PDF che si sono bloccati Mail su OS X e il problema si è rivelato essere i caratteri incorporati, sottoformati.

+0

Intendi dire che è il codice che analizza e rende il documento che si blocca, piuttosto che il file stesso? Sì, ne sono consapevole. E abbiamo scavato molto nei file, cercando di disabilitare questo elemento o quello. Non sembra che siano i caratteri nel nostro caso, ma ci penserò un po 'di più. Grazie. – Felixyz

1

Ho scoperto che gli elementi di ombreggiamento di Tensor interromperanno definitivamente l'app. Sempre! È assolutamente riproducibile.

1

Ho svolto ricerche anche su questo problema. Ho ridotto il mio problema a un file PDF a singola pagina con un'immagine in bianco e nero incorporata. L'apertura del pdf in Adobe Reader sia stand alone che in un browser produce sempre una finestra di dialogo "Dati insufficienti per un'immagine" e una vista danneggiata dopo l'elemento.

Mentre la ricerca in internet per un certo tipo di rimedio a questa situazione molto comune prodotto su di un suggerimento come la causa principale - da http://forums.adobe.com/message/2151474#2151474

corse anche lo stesso problema di questo pomeriggio e dopo molte sperimentazioni scoperto la radice del mio problema è stata la mia ottimizzazione dei file PDF tramite Adobe Acrobat 6 con le immagini monocromatiche compresse usando JBIG2. Ho rimosso la compressione solo sulle immagini monocromatiche (le immagini a colori, ecc. Erano ancora compresse tramite JPEG) e ora i miei file si aprono perfettamente nel lettore 9.1, 8, ecc.

Forse questo è il problema che stai affrontando?


In seguito .... ho localizzato il problema con 'dati sufficienti per immagine' errori di immagini a colori convertiti in b & W utilizzando un mac. Utilizzando il file itext & java, ho trovato questa soluzione - Rileva uno spazio cromatico dell'immagine problema e lo riscrivo. Ha fatto miracoli. Non dovrebbe essere difficile replicare usando altri lang.

   image = Image.getInstance(imageUrl); 
      if(image.getColorspace() == 1 && image.isJpeg()) { 
       baseLog.warn("bad image detected at " + imageUrl); 
       BufferedImage bufImage = ImageIO.read(new URL(imageUrl)); 
       int imageType = bufImage.getType(); 
       if (imageType == 10) { 
          // convert the image to get rid of bad stuff inside 
        ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY); 
        ColorConvertOp op = new ColorConvertOp(cs, null); 
        image = Image.getInstance(op.filter(bufImage, null), null);      
       } 
      } 
+0

Ho esaminato la cosa JBIG2 a un certo punto. Ho avuto l'impressione che la maggior parte dei thread che discutevano di quel problema fossero piuttosto vecchi. In ogni caso, ci sono diversi elementi che possono causare problemi. Ho visto qualcosa che coinvolge "sfumature di piume" a un certo punto. Vedi questo link: http://forums.adobe.com/message/2011090 – Felixyz

+0

Grandi informazioni nella modifica. Questa discussione sta dando forma a una bella lista di problemi di cui le persone dovrebbero essere consapevoli e, a partire da ora, anche alcune soluzioni! – Felixyz

Problemi correlati