【发布时间】:2018-04-16 21:59:23
【问题描述】:
我有一个波斯语的报告文件,我使用下面的代码生成它:
StiReport report = new StiReport();
var stream = new MemoryStream();
var setting = new StiPdfExportSettings
{
ImageQuality = 1.0f,
ImageResolution = 300,
EmbeddedFonts = false,
UseUnicode = true,
StandardPdfFonts = true
};
report.Load(Server.MapPath(reportUrl));
report.RegData("factorReport", model);
report.RegData("factorReport_userBillDetails", model.UserBillDetail);
report.Render();
report.ExportDocument(StiExportFormat.Pdf, stream, setting);
byte[] bytesInStream = stream.ToArray();
stream.Close();
Response.Clear();
Response.ContentType = "application/force-download";
Response.AddHeader("content-disposition", "attachment; filename=Factor" + model.factorId + ".pdf");
Response.BinaryWrite(bytesInStream);
Response.End();
return View();
但是当您看到 发布到生产服务器时,动态部分会出现问题,起初我认为问题可能出在字体上,但正如您在图片中看到的那样,所有标签都使用相同的字体,但只有动态部分是正方形。之后我把它改成 Tahoma 字体,这是一种通用字体,支持波斯语,突然正方形变成了问号!!!!!
我已经创建了 fiz 文件并加载到 Stimulsoft 的字体信息表中,任何帮助将不胜感激:)
【问题讨论】:
-
你的开发机器是IIS Express?你的生产服务器的设置是什么?
Response也有设置编码的属性吗?如果是,请尝试将其设置为 UTF-8 或类似的。 -
是的,开发使用 express 运行,生产运行在完整版本的 IIS 之上,但是关于响应编码,两者都使用相同的代码,所以如果一个需要编码,另一个必须需要它,并且分开从那个编码部分不完全不正确
-
开发机和服务器可以包含不同版本的字体文件,所以请尽量设置(1) EmbeddedFonts=true, UseUnicode=true, 或(2) EmbeddedFonts=false, UseUnicode=false, StandardPdfFonts=假
标签: c# pdf unicode report stimulsoft