2010-03-26 22 views
5

Utilizzo di php e TCPDF per generare un file pdf. Tutto funziona alla grande tranne quando provo a scrivere un'immagine EPS nel pdf usando ImageEPS(). Non si presenta nulla Nessun errore (può sicuramente trovare il file). Si presenta semplicemente come uno spazio bianco.eps (da inkscape) non visualizzata in tcpdf

Le immagini raster (come PNG/JPG) funzionano correttamente.

Sto usando Inkscape per salvare il file .eps. Quando apro il file in qualsiasi altro programma, si apre bene. È il solo TCPDF a non essere visualizzato.

risposta

3

Avevo aperto il mio file * .ai in Adobe Illustrator e salvato il file come versione "Illustrator 3" per risolvere il problema. Qualunque versione più attuale ha prodotto i risultati che hai descritto (eccetto "Illustrator 8", che mi ha dato la versione B & W del mio file * .ai).

+0

Sto testando anche la libreria TCPDF e, purtroppo, trovo che funzionano solo i file di Illustrator 3. Posso confermare che quando faccio Illustrator 8, è quasi tutto nero (non in bianco e nero, il testo marrone viene visualizzato, ma nessun colore di grafica vettoriale) e Illustrator 9 e versioni successive non funzionano affatto. – Josh

2

Un po 'in ritardo, ma ho avuto lo stesso problema.

Per me, la soluzione era quella di esportare in formato PDF e riutilizzare questo PDF in TCPDF/FPDI con:

$num_pages = $pdf->setSourceFile(path_to_file); 
$template_id = $pdf->importPage(1); //if the grafic is on page 1 
$pdf->useTemplate($template_id,$x,$y,$width,$height); 
0

La funzione ImageEPS a TCPDF (6.0.004) non è pienamente attuato e la documentazione afferma il seguente:

/** 
* Embed vector-based Adobe Illustrator (AI) or AI-compatible EPS files. 
* NOTE: EPS is not yet fully implemented, use the 
* setRasterizeVectorImages() method to enable/disable rasterization of 
* vector images using ImageMagick library. 
* ... 
*/ 
public function ImageEps(...){/*...*/} 

TCPDF (6.0.004) controlla un meta-dati eps per il suo creatore. Se il creatore è Adobe Illustrator, viene eseguito un controllo di versione e se la versione è superiore a 8 viene generato un errore. I creativi diversi da Adobe Illustrator non sono selezionati e la funzione può continuare. Non sembra che TCPDF analizzi il prologo PS e questo è probabilmente uno dei motivi per cui non tutte le versioni AI sono supportate. Ecco cosa dice PostScript Language Reference sulla sezione prologo:

  • Il prologo è un insieme di definizioni di procedure specifiche per l'applicazione che un applica- zione può utilizzare nell'esecuzione del suo script. È inclusa come prima parte di ogni file PostScript generato dall'applicazione. Contiene definizioni che corrispondono a le funzioni di output dell'applicazione con le funzionalità supportate dal linguaggio PostScript .

Poiché il prologo non viene analizzato, è problematico interpretare correttamente il file.

Inkscape (0.48.3.1 r9886) crea epses con cairo e non si verificherà alcun errore e la funzione continuerà. TCPDF interpreterà in parte l'eps, ma dal momento che non produce nulla, l'output è probabilmente rimosso dalla gestione degli errori. Ma quella è solo una congettura.

ho avuto più successo con l'esportazione miei eps ad uno SVG Inkscape con -D --file = filename.eps --export-plain-svg = filename.svg e utilizzando ImageSVG invece. Nota: questa funzione non è completamente implementata, quindi non posso garantire che funzionerà. Ho solo provato un eps piuttosto semplice.