Как изменить размер шрифта по умолчанию в iTextSharp после экспорта GridView в PDF? - PullRequest
5 голосов
/ 15 июня 2011

Я использую метод iTextSharp по следующей ссылке для экспорта GridView в PDF-документ:

http://www.aspsnippets.com/Articles/Export-GridView-To-Word-Excel-PDF-CSV-Formats-in-ASP.Net.aspx

Код выглядит так:

protected void btnExportPDF_Click(object sender, EventArgs e)
{
    Response.ContentType = "application/pdf";
    Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.pdf");
    Response.Cache.SetCacheability(HttpCacheability.NoCache);

    StringWriter sw = new StringWriter();
    HtmlTextWriter hw = new HtmlTextWriter(sw);

    GridView1.AllowPaging = false;
    GridView1.DataBind(); 
    GridView1.RenderControl(hw);

    StringReader sr = new StringReader(sw.ToString());
    Document pdfDoc = new Document(PageSize.A4, 10f,10f,10f,0f);
    HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
    PdfWriter.GetInstance(pdfDoc, Response.OutputStream);

    pdfDoc.Open();
    htmlparser.Parse(sr);
    pdfDoc.Close();

    Response.Write(pdfDoc);
    Response.End();  
}

Это прекрасно работает, кроме размера шрифта в PDF. Я полагаю, что по умолчанию для iTextSharp используются Arial и 12pt.

Есть ли способ глобально изменить этот шрифт по умолчанию и его размер (по крайней мере, его размер) для всего PDF?

Спасибо!

Ответы [ 3 ]

0 голосов
/ 15 ноября 2011

C #

Hashtable props = new Hashtable();
props.Add(ElementTags.SIZE, "8");
0 голосов
/ 09 сентября 2012
BaseFont bfTimes = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, false);
iTextSharp.text.Font font20 = iTextSharp.text.FontFactory.GetFont
(iTextSharp.text.FontFactory.HELVETICA,20);
0 голосов
/ 15 июня 2011

Да, действительно.

(но мое первоначальное предложение не так ... Font.DEFFAULTSIZE - это "static final", так что ... Derp).

Err ..Я не думаю, что код таблицы стилей HTMLWorker позволит вам установить общий размер шрифта по умолчанию, хотя я не слишком много с этим работал.Я могу ошибаться.Вы можете установить его по классу или тегу, но это может быть довольно трудоемким делом ... эй!

Я думаю, вы можете установить стиль для "body", который затем будет влиять на все внутри него.Если вы не работаете с фрагментами HTML, это должно сработать:

StyleSheet bodySize = new StyleSheet();
Map<String,String> props = new HashMap<String, String>();
props.put(ElementTags.SIZE, "8"); 
bodySize.applyStyle("body", props);

htmlparser.setStyleSheet(bodySize);

То, как я это сделал, это изменить источник (com.itextpdf.text.Font.java) так, чтобы объявление Font.DEFAULTSIZE было мне по душе, но я поддерживаю свою собственную ветку ... Я такой странный.

...