使用右对齐时iTextSharp SetCharacterSpacing断开

本文关键字:SetCharacterSpacing 断开 iTextSharp 右对齐 | 更新日期: 2023-09-27 18:21:14

我有一个包含两个单元格的表。第一个单元格是左对齐的,第二个单元格是右对齐的。我还想更改文本的字符间距。我发现,更改字符间距会破坏对齐,因此右对齐的文本最终会超出表格的边界。

我在下面创建了一些测试代码,输出PDF的链接在这个链接中

https://skydrive.live.com/redir?resid=1ECE2061CFF9124B!190&authkey=!ANcB0z_BN3N4UFo

有什么替代方案或变通办法可以让字符间距在正确的对齐方式下正常工作吗?

public void CharacterSpacingTest()
{
    float margin = 50;
    using (var stream = new MemoryStream())
    {
        Document document = new Document();
        document.SetPageSize(new Rectangle(PageSize.A4.Width, PageSize.A4.Height));
        document.SetMargins(margin, margin, 30f, 100f);
        PdfWriter writer = PdfWriter.GetInstance(document, stream);
        writer.CloseStream = false;
        document.Open();
        PdfPTable table = new PdfPTable(new float[] { 100 });
        table.TotalWidth = PageSize.A4.Width - margin - margin;
        table.WidthPercentage = 100f;
        table.LockedWidth = true;
        // Create a row that is right aligned
        PdfPCell cell1 = new PdfPCell();
        cell1.AddElement(new Paragraph("Hello World") { Alignment = Element.ALIGN_RIGHT });
        cell1.BorderWidth = 1;
        table.AddCell(cell1);
        // Change the character spacing
        PdfContentByte cb = writer.DirectContent;
        cb.SetCharacterSpacing(1f);
        // Create a row that is left aligned
        PdfPCell cell2 = new PdfPCell();
        cell2.AddElement(new Paragraph("Hello World"));
        cell2.BorderWidth = 1;
        table.AddCell(cell2);
        document.Add(table);
        document.Close();
        Blobs.SaveToFile(Blobs.LoadFromStream(stream), @"c:'Dev'test.pdf");
    }
}

使用右对齐时iTextSharp SetCharacterSpacing断开

我已经设法通过使用块来设置字符间距来修复它。参见修订后的规范。

    public void CharacterSpacingTest()
    {
        float margin = 50;
        using (var stream = new MemoryStream())
        {
            Document document = new Document();
            document.SetPageSize(new Rectangle(PageSize.A4.Width, PageSize.A4.Height));
            document.SetMargins(margin, margin, 30f, 100f);
            PdfWriter writer = PdfWriter.GetInstance(document, stream);
            writer.CloseStream = false;
            document.Open();
            PdfPTable table = new PdfPTable(new float[] { 100 });
            table.TotalWidth = PageSize.A4.Width - margin - margin;
            table.WidthPercentage = 100f;
            table.LockedWidth = true;
            // Create a row that is right aligned
            PdfPCell cell1 = new PdfPCell();
            cell1.AddElement(new Paragraph(GetChunk("Hello World")) { Alignment = Element.ALIGN_RIGHT });
            cell1.BorderWidth = 1;
            table.AddCell(cell1);
            // Create a row that is left aligned
            PdfPCell cell2 = new PdfPCell();
            cell2.AddElement(new Paragraph(GetChunk("Hello World")));
            cell2.BorderWidth = 1;
            table.AddCell(cell2);
            document.Add(table);
            document.Close();
            Blobs.SaveToFile(Blobs.LoadFromStream(stream), @"c:'Dev'test.pdf");
        }
    }
    private Chunk GetChunk(string text)
    {
        Chunk chunk = new Chunk(text);
        chunk.SetCharacterSpacing(1);
        return chunk;
    }
相关文章:
  • 没有找到相关文章