2015-08-14 8 views
8

Quando uso Flying Saucer per convertire la pagina html con caratteri cinesi. Il carattere cinese visualizzato come una scatola come qui sottoFlying Saucer: carattere cinese reso come una scatola in PDF

enter image description here

ho provato entrambi i metodi: utilizzando il css come in questa risposta Flying Saucer font for unicode characters e utilizzando il codice come in questa risposta Flying Saucer iTextPDF Chinese Fonts, ma non ha funzionato. Qualcuno ha un altro suggerimento?

ho dichiarato il set di caratteri UTF-8 nel meta-tag come di seguito:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html language="en"> 
<head> 
<meta content="text/html; charset=UTF-8" http-equiv="content-type"> </meta> 
<link rel="stylesheet" type="text/css" href="file:///opt/template/employer.css"/> 
<link rel="stylesheet" type="text/css" href="file:///opt/template/style.css"/> 
<link rel="stylesheet" type="text/css" media="print" href="file:///opt/template/print.css"/> 
</head> 

Ecco la relativa sezione con i caratteri cinesi:

<tbody><tr> 
             <td align="left" width="150" valign="top"> 
              Name 
             </td> 
             <td align="left" width="305" valign="top"> 
              <label id="candidateName">VU DINH THE/你好</label> 
             </td> 
            </tr> 
            <tr> 
             <td align="left" width="150" valign="top"> 
              Gender/Status 
             </td> 
             <td align="left" width="305" valign="top"> 
              <label id="gender">Female</label>/<label id="status">Single 
</label> 
             </td> 
            </tr> 
            <tr> 
             <td align="left" width="150" valign="top"> 
              Date of Birth/Age 
             </td> 
             <td align="left" width="305" valign="top"> 
              <label id="dob">12 Sep 1985</label>/<label id="age">30</label> 
             </td> 
            </tr> 

E il contenuto di print.css:

@font-face { 
    font-family: Arial Unicode MS; 
    src: url('file:///opt/template/arialuni.ttf'); 
    -fs-pdf-font-embed: embed; 
    -fs-pdf-font-encoding: Identity-H; 
} 
+0

Puoi aggiungere il codice HTML che stai cercando di trasformare, incluso il carattere cinese che non esegue il rendering? – obourgain

+0

@obourgain, ho aggiunto le parti html rilevanti e il css –

+0

Il codice sembra corretto, funziona perfettamente sul mio PC. Il problema può venire dal file 'arialuni.ttf'. Qual è la dimensione del file? – obourgain

risposta

5

La sostituzione di un carattere con un quadrato o un rettangolo vuoto indica in genere che il carattere non è limitato nel file di font e il sistema non trova le informazioni per disegnarlo.

In questo caso, il codice HTML e CSS è corretto, ma il file arialuni.ttf è incompleto.

Per riferimento, lo arialuni.ttf dovrebbe essere ~ 23 MB.