LibreOffice-val dokumentum konvertálása PDF-re most jó
This commit is contained in:
@@ -424,7 +424,7 @@ namespace WorkFlowCheck.BL.DocumentGenerator
|
||||
/// <param name="rowsAndCells">sorok és benne az egyes cellák tartalma</param>
|
||||
/// <param name="keyInRow">első (nem fejléc) sorában lévő kulcs, ez alapján azonosítjuk be a táblázatot</param>
|
||||
/// <param name="deleteEmptyRow">ha igaz, a táblázat összes meglévő sorát törli</param>
|
||||
public void SetTable(List<List<string>> rowsAndCells, string keyInRow, bool deleteEmptyRow = false)
|
||||
public void SetTable_Old(List<List<string>> rowsAndCells, string keyInRow, bool deleteEmptyRow = false)
|
||||
{
|
||||
Body bod = Doc.MainDocumentPart.Document.Body;
|
||||
var table = bod.Descendants<Table>().Where(tbl => tbl.InnerText.Contains(keyInRow)).FirstOrDefault();
|
||||
@@ -458,6 +458,79 @@ namespace WorkFlowCheck.BL.DocumentGenerator
|
||||
}
|
||||
}
|
||||
}
|
||||
public void SetTable(List<List<string>> rowsAndCells, string keyInRow, bool deleteEmptyRow = false)
|
||||
{
|
||||
Body bod = Doc.MainDocumentPart.Document.Body;
|
||||
var table = bod.Descendants<Table>().Where(tbl => tbl.InnerText.Contains(keyInRow)).FirstOrDefault();
|
||||
if (table != null)
|
||||
{
|
||||
TableRow formatRow = null;
|
||||
|
||||
// Megkeressük az első sort és elmentjük a formázást
|
||||
if (deleteEmptyRow)
|
||||
{
|
||||
var firstRow = table.ChildElements.OfType<TableRow>().FirstOrDefault();
|
||||
if (firstRow != null)
|
||||
{
|
||||
formatRow = (TableRow)firstRow.CloneNode(true); // Az első sor másolása formázással
|
||||
var deletedRows = table.ChildElements.OfType<TableRow>().ToList();
|
||||
foreach (var item in deletedRows)
|
||||
table.RemoveChild(item);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var deletedRow = table.ChildElements.OfType<TableRow>().LastOrDefault();
|
||||
if (deletedRow != null)
|
||||
{
|
||||
formatRow = (TableRow)deletedRow.CloneNode(true); // Az utolsó sor másolása formázással
|
||||
table.RemoveChild(deletedRow);
|
||||
}
|
||||
}
|
||||
|
||||
// Új sorok beszúrása a mentett formázással
|
||||
foreach (var row in rowsAndCells)
|
||||
{
|
||||
List<OpenXmlElement> cells = new List<OpenXmlElement>();
|
||||
|
||||
for (int i = 0; i < row.Count; i++)
|
||||
{
|
||||
var cellText = row[i].Replace("#", "");
|
||||
|
||||
// Ha van formázási minta, alkalmazzuk
|
||||
TableCell newCell;
|
||||
if (formatRow != null && i < formatRow.Elements<TableCell>().Count())
|
||||
{
|
||||
var formatCell = formatRow.Elements<TableCell>().ElementAt(i);
|
||||
var clonedCell = (TableCell)formatCell.CloneNode(true);
|
||||
var para = clonedCell.Descendants<Paragraph>().FirstOrDefault();
|
||||
|
||||
// Ha van beágyazott szöveg, frissítjük a tartalmát
|
||||
if (para != null)
|
||||
{
|
||||
var run = para.Descendants<Run>().FirstOrDefault();
|
||||
if (run != null)
|
||||
{
|
||||
run.RemoveAllChildren<Text>();
|
||||
run.AppendChild(new Text(cellText));
|
||||
}
|
||||
}
|
||||
|
||||
newCell = clonedCell;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Alapértelmezett cella, ha nincs formázási minta
|
||||
newCell = new TableCell(new Paragraph(new Run(new Text(cellText))));
|
||||
}
|
||||
|
||||
cells.Add(newCell);
|
||||
}
|
||||
|
||||
table.Append(new TableRow(cells));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public byte[] CloseAndGetDocument()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user