2013-08-25 13 views
6

Sto cercando di inserire alcuni caratteri unicode (arabo) in formato PDF con C# Ho usato la libreria iTextSharp ma quando inserisco i caratteri e salvo caratteri nel file PDF i caratteri unicode non vengono visualizzati fino a fare doppio clic sulla posizione dei chracters che dovrebbero essere visualizzati.riempire il modulo pdf con caratteri unicode

string pdfTemplate = @"c:\po.pdf"; 
string newFile = @"g:\test\completed_fw4.pdf"; 
PdfReader pdfReader = new PdfReader(pdfTemplate); 
PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(newFile, FileMode.Create)); 
AcroFields pdfFormFields = pdfStamper.AcroFields; 
pdfFormFields.SetField("position", TextBox1.Text); 
pdfStamper.FormFlattening = false; 
// close the pdf 
pdfStamper.Close(); 

risposta

11

Ci sono un paio di modi in cui è possibile risolvere questo problema, ma in ultima analisi, è necessario specificare un tipo di carattere che è in grado di rendere il vostro contenuti Unicode.

In primo luogo, creare un oggetto BaseFont che punta al vostro font Unicode, sto usando Arial Unicode di seguito:

var arialFontPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "ARIALUNI.TTF"); 
var arialBaseFont = BaseFont.CreateFont(arialFontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 

Poi è possibile impostare la proprietà font su ogni campo individualmente:

pdfFormFields.SetFieldProperty("position", "textfont", arialBaseFont, null); 

Oppure puoi aggiungere un font sostitutivo a livello di documento:

pdfFormFields.AddSubstitutionFont(arialBaseFont); 
+0

questo rende il file pdf così grande salta da 2 MB a 17 MB. – danarj

+1

Arial Unicode MS supporta oltre 50.000 glifi, motivo per cui è così grande. Lo standard PDF (e non solo iText) non viene fornito con glifi per le lingue diverse dall'inglese, quindi è necessario fornire un font che lo faccia. È possibile scegliere qualsiasi carattere desiderato, ho appena usato Arial Unicode MS come esempio. –

+0

c'è un modo per aggirare. – danarj