2015-05-19 2 views
0

Я добавил функцию ниже, чтобы изменить поля для страницы при каждой смене страницы. я нашел форум метод, который устанавливает размер страницы:itextsharp change margin no document.SetPageSize

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; } 

    } 
+0

Я вижу, что вы нашли метод 'SetMargins()', который в порядке, но ** не разрешено ** изменять «Документ» в событии страницы. Почему вы делаете это в событии страницы? –

+0

Привет и спасибо за ответ. Должен ли я меняться с каждым изменением страницы, где их лечить? спасибо – memmo77

+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(...) на вашем странице.