首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTML转PDF土耳其语字符问题

HTML转PDF土耳其语字符问题
EN

Stack Overflow用户
提问于 2010-10-26 19:22:21
回答 2查看 5.3K关注 0票数 5

我想转换一个使用ITextSharp的ASP.NET网页到pdf格式。我确实写了一些代码,但我不能让它显示土耳其字符。有谁可以帮我?

代码如下:

代码语言:javascript
复制
using System;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;

using System.Web.UI;
using System.Web;
using iTextSharp.text.html.simpleparser;
using System.Text;
using System.Text.RegularExpressions;

namespace Presentation
{
    public partial class TemporaryStudentFormPrinter : System.Web.UI.Page
    {
        protected override void Render(HtmlTextWriter writer)
        {
            MemoryStream mem = new MemoryStream();
            StreamWriter twr = new StreamWriter(mem);
            HtmlTextWriter myWriter = new HtmlTextWriter(twr);
            base.Render(myWriter);
            myWriter.Flush();
            myWriter.Dispose();
            StreamReader strmRdr = new StreamReader(mem);
            strmRdr.BaseStream.Position = 0;
            string pageContent = strmRdr.ReadToEnd();
            strmRdr.Dispose();
            mem.Dispose();
            writer.Write(pageContent);
            CreatePDFDocument(pageContent);
        }
        public void CreatePDFDocument(string strHtml)
        {
            string strFileName = HttpContext.Current.Server.MapPath("test.pdf");
            Document document = new Document(PageSize.A4, 80, 50, 30, 65);
            PdfWriter.GetInstance(document, new FileStream(strFileName, FileMode.Create));

            StringReader se = new StringReader(strHtml);
            HTMLWorker obj = new HTMLWorker(document);

            document.Open();

            obj.Parse(se);
            document.Close();
            ShowPdf(strFileName);
        }
        public void ShowPdf(string strFileName)
        {
            Response.ClearContent();
            Response.ClearHeaders();
            Response.AddHeader("Content-Disposition", "inline;filename=" + strFileName);
            Response.ContentType = "application/pdf";
            Response.WriteFile(strFileName);
            Response.Flush();
            Response.Clear();
        }

        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-26 21:45:24

代码语言:javascript
复制
iTextSharp.text.pdf.BaseFont STF_Helvetica_Turkish = iTextSharp.text.pdf.BaseFont.CreateFont("Helvetica", "CP1254", iTextSharp.text.pdf.BaseFont.NOT_EMBEDDED);

iTextSharp.text.Font fontNormal = new iTextSharp.text.Font(STF_Helvetica_Turkish, 12, iTextSharp.text.Font.NORMAL);

您应该将字体作为参数传递给它的文本操作命令,如下所示:

代码语言:javascript
复制
pdftable.AddCell(new Phrase(nn.InnerText.Trim(), fontNormal));

您可能需要考虑使用具有pdf导出功能的报告工具,而不是直接使用pdf,因为pdf可能非常令人头疼。

票数 10
EN

Stack Overflow用户

发布于 2010-10-26 19:45:59

您需要确保使用支持土耳其语字符集(或至少是您试图写出的字符)的字体编写文本。

我不知道HtmlTextWriter在字体使用方面做了什么-它可能会使用一种标准的内置字体,如果超出了Latin1或Latin1扩展的Unicode范围,这些字体就不太可能支持您想要打印的字符。

我使用BaseFont.createFont(...)在我的iText (Java)格式的PDF中包含一个外部字体-一个支持我正在编写的所有字符的字体。您也许能够创建您的字体对象,然后将其传递给HtmlTextWriter?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4023118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档