itextsharp更改边距没有document.SetPageSize

时间:2015-05-19 14:26:51

标签: itextsharp margins

我添加了以下功能来更改页面的边距 在每一页都改变。 我在论坛上找到了一个设置页面大小的方法:

document.SetPageSize (New Rectangle (36.0F, 36.0F, 52.0F, PageFooter.TotalHeight))

但我不想改变页面的大小,而是改变页边距。 感谢

    public override void OnEndPage(PdfWriter writer, Document document)
    {

        try 
        { 

        DataSet dsReport = new DataSet();
        foreach (DataSet obj in report.arrayDs)
        {
            dsReport = obj;
            break;
        }
        Single topMargin = 0;
        if (document.PageNumber != 1)
        {
            if (report.repeatHead) //ripete l'intestazione del report su tutte le pagine di stampa
            {
                repeatHead(writer, document);
                topMargin = 60;
            }
            else
            {
                if (document.PageNumber == 2) //ripete l'intestazione del report solo sulla second pagina dopo la copertina
                {
                    repeatHead(writer, document);
                    topMargin = 60;
                }
                else
                {
                    topMargin = Convert.ToSingle(dsReport.Tables["REPORT_STYLE"].Rows[0]["topMargin"]) * 10;
                }
            }
            document.SetMargins(Convert.ToSingle(dsReport.Tables["REPORT_STYLE"].Rows[0]["leftMargin"]) * 10,
                    Convert.ToSingle(dsReport.Tables["REPORT_STYLE"].Rows[0]["rightMargin"]) * 10,
                    topMargin,
                    Convert.ToSingle(dsReport.Tables["REPORT_STYLE"].Rows[0]["bottomMargin"]) * 10);
        }

        }
        catch
        { throw; }

    }

1 个答案:

答案 0 :(得分:0)

根据您在评论中的澄清,您希望第一页的上边距为60,第二页的上边距为0.

以下屏幕截图显示: enter image description here

实现此目的的Java代码如下所示:

public void createPdf(String dest) throws IOException, DocumentException {
    float left = 30;
    float right = 30;
    float top = 60;
    float bottom = 0;
    Document document = new Document(PageSize.A4, left, right, top, bottom);
    PdfWriter.getInstance(document, new FileOutputStream(dest));
    document.open();
    document.setMargins(left, right, 0, bottom);
    for (int i = 0; i < 60; i++) {
        document.add(new Paragraph("This is a test"));
    }
    document.close();
}

如果要将其移植到C#,则需要将一些小写更改为大写。您已经了解了大部分方法,例如:我在您的网页事件中看到document.SetMargins(...)