2013-12-10 92 views
2

如何使用iIextSharp設置PDF文檔的默認字體和字體大小,以便在整個PDF中使用。使用itextsharp更改pdf中的默認字體和字體大小

+1

根據您的評論如下你說的一些關於HTML,請解釋這更多。你解析HTML嗎?如果是這樣,那麼在這種情況下,你實際上可以指定一個默認字體。 –

回答

1

感謝您的回答傢伙,但我剛好從外部CSS服用字體覆蓋XmlWorker的默認字體整理出的問題以下屬性:

strong b {font-weight:bold;font-family:Century Gothic;} 
em i {font-style:italic;font-family:Century Gothic;} 
p,ol,ul,li,dl,a,td,tr{font-family:Century Gothic;font-size:10pt;color:#191919;} 
a{color:Blue;} 
td,tr,table{border-width:0.5px;} 
+4

如果你想知道爲什麼沒有人前進並用這個想法回答你的問題......那麼,試着在你提到的使用html和「XmlWorker」工作的問題中試圖顯示在iTextSharp中創建pdf時的位置。 – mkl

2

使用下面的函數(如需要您可以更改字體樣式/大小)

Private Function FormatPhrase(value As String) As Phrase 
    Return New Phrase(value, FontFactory.GetFont(FontFactory.HELVETICA, 8)) 
End Function 

,並以此來顯示信息。

public static void ParseHtmlToPdf(IElementHandler handler,StringReader inputText,float maxWidth,float maxHeight) 
    { 
     XMLWorkerFontProvider fontProvider = new XMLWorkerFontProvider(); 
     fontProvider.Register(HttpContext.Current.Server.MapPath(@"~/Content/IMTLayout/IMTFonts/CenturyGothic/GOTHIC.TTF"), "Default_CenturyGothic"); 
     CssAppliers ca = new CssAppliersImpl(fontProvider); 
     var context = new HtmlPipelineContext(ca); 
     context.SetAcceptUnknown(true); 
     context.SetTagFactory(Tags.GetHtmlTagProcessorFactory()); 

     context.SetImageProvider(new CustomImageHandler { BaseUri = HttpContext.Current.Request.Url.ToString(),MaxHeight = maxHeight,MaxWidth = maxWidth}); 
     var cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(false); 
     cssResolver.AddCssFile(HttpContext.Current.Server.MapPath("~/Content/IMTLayout/IMTCss/pdfreport.css"), true); 
     var pipeline = new CssResolverPipeline(cssResolver, 
               new HtmlPipeline(context, new ElementHandlerPipeline(handler, null))); 
     var worker = new XMLWorker(pipeline, true); 
     var parser = new XMLParser(); 
     parser.AddListener(worker); 
     parser.Parse(inputText); 
    } 

我的CSS文件有:例如,

Dim stuName As PdfPCell = New PdfPCell(FormatPhrase("Sample Document")) 
+3

這是正確的,但我只想詳細說明。 iText不支持爲文檔設置「默認字體」,而是每次都需要手動指定它。正如@Aishvarya指出的那樣,輔助/工廠方法可以使這一點變得容易一些。 –

+0

由於這不是我想要的,因爲我已經知道這件事了,但我真正的問題是,當我更改字體,然後我的HTML格式的文本都沒有了,我不想發生。任何幫助都令人欽佩。謝謝。 – basnetujwal

3

會見了俄羅斯和羅馬尼亞字母(itextsharp 5.5.6.0, .net 3.5)相同的問題。我剛說:

string arialuniTff = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "ARIALUNI.TTF"); 
FontFactory.Register(arialuniTff);  
StyleSheet ST = new StyleSheet(); 
ST.LoadTagStyle(HtmlTags.BODY, HtmlTags.FACE, "Arial Unicode MS"); 
ST.LoadTagStyle(HtmlTags.BODY, HtmlTags.ENCODING, BaseFont.IDENTITY_H) 

parser.SetStyleSheet(ST); 

,但你開始解析您的TextReader加載之前:

parser.Parse(reader); 

否則將無法正常工作。

0

試試這個:

BaseFont bf = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, BaseFont.NOT_EMBEDDED); 

iTextSharp.text.Font font = new iTextSharp.text.Font(bf, 10, iTextSharp.text.Font.NORMAL); 


Paragraph p1 = new Paragraph(new Chunk("Some text content here \n", font)); 
相關問題