Existe-t-il un moyen d'ajouter une bordure autour de la table et de masquer les bordures de cellule dans MigraDoc?Comment ajouter une bordure autour d'une table dans MigraDoc?
Répondre
La largeur par défaut des bordures est 0 et les bordures ne sont pas visibles. Pour activer les frontières, définissez une valeur supérieure à 0.
Si table
est votre objet table, vous pouvez écrire table.Borders.Width = 0.5;
Vous pouvez définir les frontières de la table et pour chaque cellule. Les cellules héritent des propriétés de bordure de la table, de la colonne et de la ligne à moins qu'elles ne soient écrasées à un niveau inférieur.
Vérifiez également la méthode SetEdge
de la classe Table
.
Exemple de code discuté ici:
http://www.pdfsharp.net/wiki/Invoice-sample.ashx
Mon code de test:
private static void TabelWithBorderTest()
{
var document = new Document();
// Add a section to the document.
var section = document.AddSection();
Table table = section.AddTable();
table.Borders.Width = 0.25;
table.Rows.LeftIndent = 0;
// Before you can add a row, you must define the columns
Column column = table.AddColumn("7cm");
column.Format.Alignment = ParagraphAlignment.Left;
Row row = table.AddRow();
row.Cells[0].AddParagraph("Text in table");
// Create a renderer for the MigraDoc document.
var pdfRenderer = new PdfDocumentRenderer(false) { Document = document };
// Associate the MigraDoc document with a renderer.
// Layout and render document to PDF.
pdfRenderer.RenderDocument();
// Save the document...
const string filename = "TableTest.pdf";
pdfRenderer.PdfDocument.Save(filename);
// ...and start a viewer.
Process.Start(filename);
}
J'ai essayé que ça ne marche pas, j'ai compris comment faire. – user629283
J'ai ajouté le code de travail à mon message. –
Oh, j'ai réussi à le faire fonctionner maintenant – user629283
j'ai réussi à obtenir ce bas en réglant chaque ligne la visibilité des frontières comme fausse;
var document = new Document();
var page = document.AddSection();
Table table = page.AddTable();
table.Borders.Visible = true;
Column col = table.AddColumn("3cm");
col = table.AddColumn("10cm");
col = table.AddColumn("3cm");
col.Format.Alignment = ParagraphAlignment.Left;
Row row = table.AddRow();
Paragraph p = row.Cells[0].AddParagraph();
p.AddFormattedText("Top header row");
row.Cells[0].MergeRight = 2;
// then set it in visible as false like this, you can do top, left and right as well
row.Cells[0].Borders.Bottom.Visible = false;
ne semble pas agréable, mais si quelqu'un a une meilleure solution ne l'afficher
Mon exemple de code fonctionne sans définir la visibilité - cela fonctionne très bien avec les valeurs par défaut. Quel est le but de 'p.AddFormattedText (" Ligne d'en-tête supérieure ");'? –
@PDFsharpNovice J'ai essayé ça mais ça n'a pas fonctionné pour moi – user629283
@PDFsharpNovice quand j'ai essayé votre chemin, il supprime toutes les lignes de bordure, y compris celle autour de la table. p.addformattedText part - c'était une copie rapide et coller, mais j'allais rendre cette partie en gras. – user629283
Avez-vous essayé quelque chose? – PaulF
J'ai essayé table.Borders.Visible = true; et pour chaque rangée j'ai essayé de le mettre à faux visible, j'ai essayé de changer la couleur du haut comme vide. – user629283