【问题标题】:itextsharp how to add a full line breakitextsharp如何添加完整的换行符
【发布时间】:2013-12-12 13:45:21
【问题描述】:

我使用 itextsharp,我需要从页面的左到右绘制一个虚线换行符(100% 宽度),但不知道如何。文档总是有一个左右边距。请帮忙

var pageSize = PageSize.A4;

        if (_pdfSettings.LetterPageSizeEnabled)
        {
            pageSize = PageSize.LETTER;
        }


        var doc = new Document(pageSize);
        PdfWriter.GetInstance(doc, stream);
        doc.Open();

        //fonts

        var titleFont = GetFont();
        titleFont.SetStyle(Font.BOLD);
        titleFont.Color = BaseColor.BLACK;
        titleFont.Size = 16;

        var largeFont = GetFont();
        largeFont.SetStyle(Font.BOLD);
        largeFont.Color = BaseColor.BLACK;
        largeFont.Size = 18;

        int ordCount = orders.Count;
        int ordNum = 0;

        foreach (var order in orders)
        {

            var addressTable = new PdfPTable(3);
            addressTable.WidthPercentage = 100f;
            addressTable.SetWidths(new[] { 25, 37, 37 });


            // sender address

            cell = new PdfPCell();
            //cell.Border = Rectangle.NO_BORDER;
            cell.AddElement(new Paragraph("Người Gửi", titleFont));
            cell.AddElement(new Paragraph(_localizationService.GetResource("admin.orders.pdfinvoice.sender", lang.Id), smallFont));
            cell.AddElement(new Paragraph(_localizationService.GetResource("admin.orders.pdfinvoice.senderaddress", lang.Id), smallFont));
            cell.AddElement(new Paragraph(_localizationService.GetResource("PDFInvoice.Hotline", lang.Id), smallFont));
            cell.AddElement(new Paragraph("TAKARA.VN", largeFont));

            addressTable.AddCell(cell);

            ......
           Chunk linebreak = new Chunk(new DottedLineSeparator());
                doc.Add(linebreak);   

                doc.Add(new Paragraph(""));
           ....
}

【问题讨论】:

    标签: c# itextsharp


    【解决方案1】:

    请看示例FullDottedLine

    您正在创建一个DottedLineSeparator,其宽度百分比默认为 100%。这 100% 是完整的可用宽度与页面的边距。如果您希望线条超过可用宽度,则需要一个高于 100% 的百分比。

    在示例中,使用了默认页面大小 (A4) 和默认边距 (36)。这意味着页面的宽度是 595 个用户单位,可用宽度等于 595 - (2 x 36) 个用户单位。跨越整个页面宽度所需的百分比等于 100 x (595 / 523)。

    查看生成的 PDF 文件 full_dotted_line.pdf,您会发现该行现在穿过页边距。

    【讨论】:

    • 感谢您的帮助。但是不知何故,我的 itextsharp for .net 没有 setPercentage 方法。
    • 你用的是哪个版本?
    • 布鲁诺的例子是 Java。每当您看到 Java 示例时,您几乎总是可以假设 getXYZ/setXXX 方法已转换为 .Net 中的 XYZ 属性。因此,您可以使用 Percentage = X 而不是 setPercentage(X)
    • 您提供的链接失效了。
    猜你喜欢
    • 2020-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 2012-06-01
    • 2018-05-29
    • 2016-06-01
    相关资源
    最近更新 更多