2011-09-22 7 views
5

Uso il componente ABCpdf.net per convertire l'HTML in PDF. Alcuni HTML utilizzano il carattere Symbol per visualizzare determinati caratteri. Sfortunatamente, stiamo consumando l'HTML da una terza parte e non può essere modificato.Carattere simbolo su ABCpdf

Il mio ambiente di sviluppo visualizza correttamente il carattere, ma il mio ambiente di produzione no. Agisce come se il font non fosse installato, anche se lo è. Se eseguo il rendering dello stesso codice HTML in Internet Explorer nell'ambiente di produzione, viene visualizzato correttamente.

Ho provato a incorporare il carattere come un .eot e fornendo uno stile @ font-face nell'intestazione. Ho provato a utilizzare TheDoc.AddFont ('Symbol'). Eventuali suggerimenti?

prodotto: ABCpdf .NET 7 x64

Produzione SO: Windows Server 2003 x64, IE8

Sviluppo OS: Win7 x64, IE8

risposta

2

Anche se ho detto che Doc.HtmlOptions era la risposta, si è scoperto che era qualcos'altro. I simboli non sono stati visualizzati perché il peso del font non era normale (ad esempio, era in grassetto). Non esiste un sottoinsieme in grassetto che contenga questi caratteri. IE è abbastanza intelligente da ignorare la parte in grassetto, ma PDF è piuttosto schizzinoso. Non riesce a trovare il personaggio, quindi non mostra nulla.

La vera soluzione era quella di analizzare l'HTML e assicurarsi che tutti i simboli fossero circondati da un span con font-weight: normal !important. È forse una soluzione meno elegante, ma è efficace. L'unico simbolo che ancora viene rifiutato in modo casuale è il simbolo dell'angolo (∠). Per questo, l'ho sostituito con un'immagine. Non riesco ancora a capire perché non apparirà.

2

Provare a riavviare il server.

Ho avuto un problema simile con i caratteri su ABCPdf. Sebbene i font siano stati chiaramente installati, per qualche motivo, ABDPdf non li ha prelevati finché la macchina non è stata riavviata.

Potrebbe esserci qualche modo di non riavvio per ottenere la stessa cosa, ma ciò significherebbe capire qual è il problema! Se è facile, prova a riavviare.

+0

Sì, la documentazione dice che i caratteri sono effettivamente memorizzati nella cache e non verranno ricaricati fino al riavvio del processo. Questo non è un mio problema, sfortunatamente, ma grazie! =] – samiz

6

Il team di supporto di WebSuperGoo ha risposto con la correzione: impostazione HtmlOptions correlate ai caratteri. Ho impostato queste opzioni e ha risolto il problema. Sìì!

If you want to embed the fonts used in a web page/HTML you need to use: 
    Doc.HtmlOptions.FontEmbed = True 
You may also need to set 
    Doc.HtmlOptions.FontSubstitute = False 
and possibly: 
    Doc.HtmlOptions.FontProtection = False 
before you use the Doc.AddImageUrl or Doc.AddImageHtml methods. 

Edit: Come ho detto nel commento qui sotto, l'opzione che ha fatto il trucco era FontProtection = false.

+1

li hai provati singolarmente per vedere quale riga di codice o combinazione di linee ha funzionato per te? Ho provato la prima linea in passato senza successo - potrei averla usata nel posto sbagliato però. –

+1

L'ho fatto, in realtà. Il problema è risolto con il solo FontProtection impostato su false. – samiz

+0

Ho avuto problemi con i miei PDF che ho generato da HTML e mostrato nella mia app per iPad. Il problema era che i punti elenco venivano resi errati. Ho cambiato il tipo di carattere e ho impostato 'Doc.HtmlOptions.FontEmbed = True' e questo ha risolto il mio problema. –

Problemi correlati