2014-11-02 10 views
7

Voglio convertire una pagina HTML che contiene caratteri arabi in un file PDF utilizzando FlyingSaucer, ma il PDF generato non contiene caratteri combinati e stampa l'output all'indietro.Convertire la pagina HTML contenente caratteri arabi in PDF utilizzando FlyingSaucer

HTML:

<?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 xmlns="http://www.w3.org/1999/xhtml"> 
 
    <head> 
 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
 
    </head> 
 

 
    <body style="font-size:15px;font-family: Arial Unicode MS;"> 
 

 
     <center style="font-size: 18px; font-family: Arial Unicode MS;"> 
 
      <b> 
 
       <i style="font-family: Arial Unicode MS;"> 
 
        &#x062C;&#x0645;&#x064A;&#x0639; &#x0627;&#x0644;&#x062D;&#x0642;&#x0648;&#x0642;<br /> 
 
       </i> 
 
      </b> 
 
     </center> 
 
    </body> 
 
</html>

Java Estratto:

String inputFile = "c:\\html.html"; 
     String url = new File(inputFile).toURI().toURL().toString(); 
     String outputFile = "c:\\html.pdf"; 
     OutputStream os = new FileOutputStream(outputFile); 

     ITextRenderer renderer = new ITextRenderer(); 
     renderer.getFontResolver().addFont("c://ARIALUNI.TTF", BaseFont.IDENTITY_H,BaseFont.EMBEDDED); 

     renderer.setDocument(url); 
     renderer.layout(); 
     renderer.createPDF(os); 
     os.close(); 

Actual PDF Risultato:actual result

atteso PDF Risultato:expected result

Che cosa posso fare per ottenere il risultato giusto?

+0

In realtà si sta tentando di convertire un'immagine di tela in pdf ??? – CoderNeji

+0

Questo mi sembra un insetto di un disco volante. I caratteri unicode arabi si trovano in un intervallo ben definito e sono (ovviamente) noti come RTL (da destra a sinistra). Chiaramente il browser sta visualizzando RTL, ma non lo è il disco volante. Segnala l'errore a google. –

+0

Hai una soluzione per il formato arabo? – Hana90

risposta

0

Mentre stavo lavorando con caratteri arabi, ho affrontato un problema di allineamento simile. L'arabo è una lingua RTL. Sono necessari contenitori specifici per generare PDF in un linguaggio RTL. Attualmente quando si tenta di generare PDF, la modalità è normale LTR a causa della quale si ottiene l'output corrente.

+0

Come aggiustalo?? – Hana90