HTML To PDF Turkish Character问题
我想使用ITextSharp将ASP.NET网页转换为pdf。我确实写了一些代码,但是我不能让它显示土耳其字符。谁能帮我?HTML To PDF Turkish Character问题
下面是代码:
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)
{
}
}
}
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);
您应该通过字体作为iTextSharp的操作参数命令,这样的:
pdftable.AddCell(new Phrase(nn.InnerText.Trim(), fontNormal));
你可能要考虑与报告工具正与PDF导出功能,而不是照片直接使用PDF,其可以是一个真正的头痛..
你需要确保你正在写在支持土耳其字符集(或者至少你尝试caracters写出来)一个字体文本。
我不知道HtmlTextWriter在字体使用方面做了什么 - 它可能会使用标准内置字体之一,这些字体不太可能支持要打印的字符,如果落在Latin1或Latin1之外扩展的Unicode范围。
我使用BaseFont.createFont(...)
在iText(Java)中的PDF中包含一个外部Font,它支持我正在编写的所有字符。您可能能够创建您的Font对象,然后将其传递给HtmlTextWriter?
让我试试,谢谢。 – user487533 2010-10-26 11:53:12
我想这不行。任何其他想法? – user487533 2010-10-26 13:44:07
有没有必要使用大写锁定您的标题... – joni 2010-10-26 11:25:27
快乐?现在,你能帮我吗? – user487533 2010-10-26 11:30:20
不,对不起。我不会说ASP .. – joni 2010-10-26 11:35:41