如何在iTextSharp中引入上标?

时间:2015-05-19 10:10:47

标签: c# html pdf itextsharp

我希望输出格式的日期与2015年5月14日相同.14中的 th 它应该带有sup标签,但sup标签不在此处访问。我得到的输出是ph102变量。在这里只获得了getuffix(csq.EventDate.Value.Day)我得到了st的后缀和日期的rd

我的代码:

PdfPTable table9 = new PdfPTable(4);
table9.WidthPercentage = 99;
table9.DefaultCell.Border = 0;
table9.DefaultCell.VerticalAlignment = Element.ALIGN_MIDDLE;
Phrase ph101 = new Phrase("Event Date & Time", textFont2);
PdfPCell cellt1 = new PdfPCell(ph101);
cellt1.Border = PdfPCell.BOTTOM_BORDER + PdfPCell.LEFT_BORDER + PdfPCell.RIGHT_BORDER;
cellt1.PaddingTop = 0F;
cellt1.VerticalAlignment = Element.ALIGN_MIDDLE;
cellt1.HorizontalAlignment = Element.ALIGN_LEFT;
DateTime eventTime = DateTime.Today;
if (!string.IsNullOrEmpty(Convert.ToString(csq.EventTime)))
    eventTime = DateTime.Today.Add(csq.EventTime.Value);
Phrase ph102;
if (!string.IsNullOrEmpty(csq.EventDate.ToString()))
{
    ph102 = new Phrase(csq.EventDate.Value.Day +  Getsuffix(csq.EventDate.Value.Day) + csq.EventDate.Value.ToString("MMM") + " " + csq.EventDate.Value.Year + " at " + eventTime.ToString("hh:mm tt"), textFont7);
}
else
{
    ph102 = new Phrase();
}
PdfPCell cellt2 = new PdfPCell(ph102);
cellt2.Border = PdfPCell.BOTTOM_BORDER + PdfPCell.LEFT_BORDER + PdfPCell.RIGHT_BORDER;
cellt2.PaddingTop = 0F;
cellt2.VerticalAlignment = Element.ALIGN_MIDDLE;
cellt2.HorizontalAlignment = Element.ALIGN_LEFT;

1 个答案:

答案 0 :(得分:4)

当我读到你的问题时,我认为你想要这样的东西:

enter image description here

然而,正如在给你提示使用HTML到PDF的人的评论中所证明的那样,你让人困惑。你的回答是“没先生不能工作”这是一个奇怪的答案,因为可以工作。当你谈到sup标签时,这不是你的意思。至少,这是我在看你的代码时所假设的,我没有看到任何HTML。

在您的代码中,您可以像这样创建Phrase

 ph102 = new Phrase(csq.EventDate.Value.Day
     +  Getsuffix(csq.EventDate.Value.Day)
     + csq.EventDate.Value.ToString("MMM")
     + " " + csq.EventDate.Value.Year
     + " at " + eventTime.ToString("hh:mm tt"), textFont7);

这个完整的PhrasetextFont7中表示,在您的情况下无法使用,因为您希望为"st""nd"使用较小的字体,{ {1}}或"rd"

您需要执行以下操作(有关完整示例,请参阅OrdinalNumbers):

"th"

这是在屏幕截图中创建PDF的 Java 代码。您必须调整代码以使其在C#中工作。如您所见,您不能仅使用public void createPdf(String dest) throws IOException, DocumentException { Document document = new Document(); PdfWriter.getInstance(document, new FileOutputStream(dest)); document.open(); Font small = new Font(FontFamily.HELVETICA, 6); Chunk st = new Chunk("st", small); st.setTextRise(7); Chunk nd = new Chunk("nd", small); nd.setTextRise(7); Chunk rd = new Chunk("rd", small); rd.setTextRise(7); Chunk th = new Chunk("th", small); th.setTextRise(7); Paragraph first = new Paragraph(); first.add("The 1"); first.add(st); first.add(" of May"); document.add(first); Paragraph second = new Paragraph(); second.add("The 2"); second.add(nd); second.add(" and the 3"); second.add(rd); second.add(" of June"); document.add(second); Paragraph fourth = new Paragraph(); fourth.add("The 4"); fourth.add(rd); fourth.add(" of July"); document.add(fourth); document.close(); } 运算符连接string。您需要使用不同的+对象撰写PhraseParagraph。你称之为“sup”的是通过使用较小的字体和文本上升来完成的。