Я использую itextsharp для генерации PDF из данных моей базы данных. Данные моей базы данных содержат текст, координату x и y и номер страницы. Вот как я это делаю.Китайские символы не отображаются с помощью iTextSharp
string oldFile = Server.MapPath(string.Format("~/App_Data/Documents/Templates/{0}", documentModel.Filename));
// open the reader
PdfReader reader = new PdfReader(oldFile);
Rectangle size = reader.GetPageSizeWithRotation(1);
iTextSharp.text.Document document = new iTextSharp.text.Document(size);
PdfWriter writer = PdfWriter.GetInstance(document, _memoryStream);
writer.CloseStream = false;
document.Open();
PdfContentByte cb;
PdfImportedPage page;
BaseFont bf;
foreach (var pageNumber in pages)
{
document.NewPage();
cb = writer.DirectContent;
// create the new page and add it to the pdf
page = writer.GetImportedPage(reader, pageNumber);
cb.AddTemplate(page, 0, 0);
bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
cb.SetColorFill(BaseColor.DARK_GRAY);
cb.SetFontAndSize(bf, 9);
var items = documentModel.FieldContents.Where(a => a.Page == pageNumber).ToList();
foreach (var item in items)
{
cb.BeginText();
cb.ShowTextAligned(item.Alignment, item.Text ?? string.Empty, item.X, item.Y, item.Rotation);
cb.EndText();
}
}
////////////////////////////////////////////////////////////////////
document.Close();
writer.Close();
reader.Close();
byte[] byteInfo = _memoryStream.ToArray();
_memoryStream.Write(byteInfo, 0, byteInfo.Length);
_memoryStream.Position = 0;
RedirectToAction("Index");
return new FileStreamResult(_memoryStream, "application/pdf");
Я использовал это какое-то время. Но я хочу поддержать и китайских персонажей. Я попытался ввести китайские символы, но он не отображается. Я изменил его на английский, и он работает. Есть идеи? Благодаря!
Вы используете «HELVETICA», один из стандартных 14 шрифтов, и вы используете кодировку «CP1252». Также первые не содержат китайских иероглифов, и китайские символы не могут быть найдены на кодовой странице 1252. Таким образом, используйте шрифт, который содержит требуемые китайские символы, и используйте кодировку, разрешающую эти символы. – mkl
Благодарим вас за отличное предложение. Если вы установили это как ответ, я мог бы принять его. Отличный совет. Благодаря! – ljpv14
Просто примите ответ Бруно, который освещает эти аспекты еще немного. – mkl