2017-08-17 3 views

Répondre

3

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); 
} 
+0

J'ai essayé que ça ne marche pas, j'ai compris comment faire. – user629283

+0

J'ai ajouté le code de travail à mon message. –

+0

Oh, j'ai réussi à le faire fonctionner maintenant – user629283

0

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

+0

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 ");'? –

+0

@PDFsharpNovice J'ai essayé ça mais ça n'a pas fonctionné pour moi – user629283

+0

@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