2011-09-22 15 views
5

Estoy usando el componente ABCpdf.net para convertir HTML a PDF. Parte del HTML usa la fuente Symbol para mostrar ciertos caracteres. Desafortunadamente, estamos consumiendo el HTML de un tercero y no se puede cambiar.Fuente de símbolo en ABCpdf

Mi entorno de desarrollo muestra la fuente correctamente, pero mi entorno de producción no. Actúa como si la fuente no estuviera instalada, aunque lo esté. Si renderizo el mismo HTML en Internet Explorer en el entorno de producción, se muestra muy bien.

He intentado incrustar la fuente como .eot y proporcionar un estilo @ font-face en el encabezado. He intentado usar TheDoc.AddFont ('Símbolo'). ¿Alguna sugerencia?

producto: ABCpdf .NET 7 x64

Producción SO: Windows Server 2003 x64, IE8

OS Desarrollo: Win7 x64, IE8

Respuesta

2

Aunque dije que Doc.HtmlOptions era la respuesta, resultó que era algo totalmente diferente. Los símbolos no aparecían porque el peso de la fuente no era normal (es decir, era negrita). No hay un subconjunto audaz que contenga estos caracteres. IE es lo suficientemente inteligente como para ignorar la parte en negrita, pero PDF es bastante quisquilloso. No puede encontrar el personaje, por lo que simplemente no muestra nada.

La solución real era peinar a través del HTML y asegurarse de que todos los símbolos estuvieran rodeados por un span con font-weight: normal !important. Es quizás una solución menos elegante, pero es efectiva. El único símbolo que aún se negó rotundamente a aparecer es el símbolo de ángulo (∠). Para esto, lo reemplacé con una imagen. Todavía no puedo entender por qué no aparecerá.

2

intente reiniciar el servidor.

He tenido un problema similar con las fuentes en ABCPdf. Aunque las fuentes se instalaron claramente, por alguna razón, ABDPdf no las recogió hasta que se reinició la máquina.

Puede haber alguna forma de no reinicio para lograr lo mismo, pero eso implicaría entender cuál es el problema. Si es fácil, solo intenta reiniciar.

+0

Sí, la documentación dice que las fuentes están en la memoria caché y no se volverán a cargar hasta que se reinicie el proceso. Este no es mi problema, lamentablemente, ¡pero gracias! =] – samiz

6

El equipo de soporte de WebSuperGoo respondió con la corrección: configuración de fuentes HtmlOptions relacionadas. Establecí estas opciones y solucionó el problema. ¡Hurra!

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. 

Editar: Como menciono en el comentario a continuación, la opción que hizo el truco fue FontProtection = false.

+1

¿los probaste individualmente para ver qué línea de código o combinación de líneas lo hizo funcionar para usted? He intentado la primera línea en el pasado sin éxito; sin embargo, podría haber estado usándola en el lugar equivocado. –

+1

Lo hice, en realidad. El problema se resuelve solo con FontProtection establecido en falso. – samiz

+0

Tuve problemas con mis archivos PDF que genero a partir de HTML y los muestro en mi aplicación para iPad. El problema era que los puntos de viñetas se presentaban mal. Cambié el tipo de fuente y establecí 'Doc.HtmlOptions.FontEmbed = True' y eso resolvió mi problema. –