Различные комментарии записываются в таблицу PDF. Таблица имеет один столбец.
Комментарии поступают от редактора HTML из веб-приложения и содержат текст HTML, который выводится с помощью pdf html.
Примеры комментариев:
Весь вывод должен быть в Verdana, но должны появиться некоторые другие шрифты (AgencyFB) ( во втором примере).
Код
public byte[] CreateDoc()
{
using (MemoryStream stream = new MemoryStream())
{
using (PdfWriter writer = new PdfWriter(stream))
{
PdfDocument pdfDoc = new PdfDocument(writer);
Document doc = new Document(pdfDoc, PageSize.A4);
PdfFont font = PdfFontFactory.CreateRegisteredFont("Verdana", PdfEncodings.CP1252, true);
float fontSize = 11f;
Table table = new Table(1);
table.AddCell(new Cell().Add(new Paragraph("no Html").SetFont(font).SetFontSize(fontSize)));
string comment1 = "<div>a <b>bold</b> and an <i>italic</i> text.</div>";
string comment2 = "<div><span style=\"font-size: 18px\">large</span><div><div><span style=\"font-size: 11px\">medium</span><div><div><span style=\"font-size: 8px\">small</span></div>";
InsertHtmlCell(table, font, fontSize, comment1);
InsertHtmlCell(table, font, fontSize, comment2);
doc.Add(table);
doc.Flush();
doc.Close();
pdfDoc.Close();
writer.Close();
}
byte[] buffer = stream.ToArray();
return buffer;
}
}
private void InsertHtmlCell(Table table, PdfFont f, float fontSize, string comment)
{
var cell = new Cell(1, 1);
// Without ConverterProperties, "times" is used
ConverterProperties prop = new ConverterProperties();
prop.SetFontProvider(new DefaultFontProvider(false, false, true));
var elements = HtmlConverter.ConvertToElements(comment, prop).Cast<IBlockElement>();
foreach (var element in elements)
{
// without the following 2 lines always "AgencyFB" is used.
element.SetProperty(Property.FONT, f);
element.SetProperty(Property.FONT_SIZE, new UnitValue(UnitValue.CreatePointValue(fontSize)));
cell.Add(element);
}
table.AddCell(cell);
}
Результат:
«жирный», «большой» , "средний" и "маленький": AgencyFB "itali c": BookAntiqua
Но весь вывод должен быть в Вердане. Как мне этого достичь?