Я прошел через несколько сообщений и попробовал все, что было предложено, но заголовок не повторяется на странице, на которую перетекает мой webgrid.Использование iTextSharp для экспорта в PDF-файлы и повторения заголовков
Вот мой код:
public FileStreamResult ExportCombinedPDF(int ProjectID)
{
List<PipelineDetails> PipeList = new List<PipelineDetails>();
ProjectManager PM = new ProjectManager();
PipeList = PM.GetPipelineList(ProjectID);
//This is the css styling for the webgrid
string webgridstyle = PM.Pipeline_HtmlForExport(ProjectID);
//This is creating the table with other details also being exported
string ProjectHtml = PM.Project_HtmlForExport(ProjectID);
WebGrid grid = new WebGrid(source: PipeList, canPage: false, canSort: false);
string gridHtml = grid.GetHtml(tableStyle: "webGrid",
headerStyle: "webGridHeader",
alternatingRowStyle: "webGridAlt",
columns: grid.Columns(
grid.Column("NodeNumber", "Node Nr."),
grid.Column("Accumulated_Length", "Accumulated Length"),
grid.Column("Elevation", "Elevation"),
grid.Column("Pipe_Outside_Diameter", "Pipe Outside Diameter"),
grid.Column("Wall_Thickness", "Wall Thickness"),
grid.Column("Control_Point_Description", "Control Point Description"),
grid.Column("Control_Point_Size", "Control Point Size"))).ToString();
string exportData = String.Format("<html><body>{0}{1} <br /> {2}</body></html>", "<style>" + webgridstyle + "</style>", ProjectHtml, gridHtml);
var bytes = System.Text.Encoding.UTF8.GetBytes(exportData);
using (var input = new MemoryStream(bytes))
{
var output = new MemoryStream();
var document = new iTextSharp.text.Document(PageSize.A4, 50, 50, 50, 50);
var writer = PdfWriter.GetInstance(document, output);
Font headerFont = FontFactory.GetFont("Verdana", 10);
Font rowfont = FontFactory.GetFont("Verdana", 10);
writer.CloseStream = false;
document.Open();
var xmlWorker = iTextSharp.tool.xml.XMLWorkerHelper.GetInstance();
xmlWorker.ParseXHtml(writer, document, input, System.Text.Encoding.UTF8);
document.Close();
output.Position = 0;
return File(output, "application/pdf", "Pipeline_Report.pdf");
//return new FileStreamResult(output, "application/pdf");
}
}
Я попытался добавить repeat-header:yes
к моему CSS, но это не сработало. Я также попытался добавить следующее в мой код ниже, который также не работает:
//This was done before the document was opened :
PdfPTable table = new PdfPTable(7);
table.HeaderRows = 2;
//This was done before the document was closed :
document.Add(table);
Но, как уже упоминалось, это тоже не сработало. Я не могу себе представить, что так сложно установить что-то, чтобы повторить заголовок.
В противном случае следующим вариантом будет просто запуск WebGrid для запуска на новой странице. Возможно ли это?
Буду признателен за любую помощь. Спасибо.
Спасибо за предложение. Я не работал над этим проектом через некоторое время, но если я смогу найти время, я попробую ваше предложение и вернусь к вам. Еще раз спасибо! – AxleWack
Так что мне нужно было сделать то же самое в другом проекте и попробовал попробовать, но он не работает :( – AxleWack
ваш CSS находится в 'PM.Pipeline_HtmlForExport()'? И у вас есть строка ' repeat-header: yes; 'где-нибудь в вашем css? – LavsTo