English 中文(简体)
MigraDoc 中未处理的例外理由
原标题:Argument out of Exception unhandled in MigraDoc
static void Main(string[] args)
    {
        string saveFileAs = "D:\Hello.pdf";
        Program p = new Program();
        Document doc = p.CreateDocument();
        PdfDocumentRenderer renderer = new PdfDocumentRenderer(true, PdfSharp.Pdf.PdfFontEmbedding.Always);
        renderer.Document = doc;
        renderer.RenderDocument();
        renderer.PdfDocument.Save("D:\Hello.pdf");
        Process.Start(saveFileAs);
    }

public Document CreateDocument()
    {
        // Create a new MigraDoc document
        this.document = new Document();
        this.document.Info.Title = "A sample invoice";
        this.document.Info.Subject = "Demonstrates how to create an invoice.";
        this.document.Info.Author = "Chandana Amarnath";

        DefineStyles();

        CreatePage();

        FillContent();

        return this.document;
   }

void CreatePage()
    {
        // Each MigraDoc document needs at least one section.
        Section section = this.document.AddSection();

        // Put a logo in the header
        Image image = section.Headers.Primary.AddImage("D:\Cubes.jpg");
        image.Height = "2.5cm";
        image.LockAspectRatio = true;
        image.RelativeVertical = RelativeVertical.Line;
        image.RelativeHorizontal = RelativeHorizontal.Margin;
        image.Top = ShapePosition.Top;
        image.Left = ShapePosition.Right;
        image.WrapFormat.Style = WrapStyle.Through;

        // Create footer
        Paragraph paragraph = section.Footers.Primary.AddParagraph();
        // The following one prints at the footer;
        paragraph.AddText("Aldata Inc.");
        paragraph.Format.Font.Size = 9;
        paragraph.Format.Alignment = ParagraphAlignment.Center;

        // Create the text frame for the address
        this.addressFrame = section.AddTextFrame();
        this.addressFrame.Height = "3.0cm";
        this.addressFrame.Width = "7.0cm";
        this.addressFrame.Left = ShapePosition.Left;
        this.addressFrame.RelativeHorizontal = RelativeHorizontal.Margin;
        this.addressFrame.Top = "5.0cm";
        this.addressFrame.RelativeVertical = RelativeVertical.Page;

        // Put sender in address frame
        paragraph = this.addressFrame.AddParagraph("Aldata-Apollo Inc.");
        paragraph.Format.Font.Name = "Times New Roman";
        paragraph.Format.Font.Size = 7;
        paragraph.Format.SpaceAfter = 3;

        // Add the print date field
        paragraph = section.AddParagraph();
        paragraph.Format.SpaceBefore = "8cm";
        paragraph.Style = "Reference";
        paragraph.AddFormattedText("Section Comparator", TextFormat.Bold);
        paragraph.AddTab();
        paragraph.AddText("Date: ");
        paragraph.AddDateField("dd.MM.yyyy");

        // Create the item table
        this.table = section.AddTable();
        this.table.Style = "Table";
        this.table.Borders.Color = Color.Parse("Black");
        this.table.Borders.Width = 0.25;
        this.table.Borders.Left.Width = 0.5;
        this.table.Borders.Right.Width = 0.5;
        this.table.Rows.LeftIndent = 0;

        //************ Before you can add a row, you must define the columns **********
        Column column = this.table.AddColumn("4cm");
        column.Format.Alignment = ParagraphAlignment.Center;

        column = this.table.AddColumn("3cm");
        column.Format.Alignment = ParagraphAlignment.Right;

        // Create the header of the table
        Row row = table.AddRow();
        row.HeadingFormat = true;
        row.Format.Alignment = ParagraphAlignment.Center;
        row.Format.Font.Bold = true;
        row.Shading.Color = Color.Parse("White");

        row.Cells[0].AddParagraph("Added");
        row.Cells[0].Format.Font.Bold = true;
        row.Cells[0].Format.Alignment = ParagraphAlignment.Center;
        row.Cells[0].MergeRight = 3;

        row = table.AddRow();
        row.HeadingFormat = true;
        row.Format.Alignment = ParagraphAlignment.Center;
        row.Format.Font.Bold = true;
        row.Cells[0].AddParagraph("Deleted Items");
        row.Cells[0].Format.Font.Bold = true;
        row.Cells[0].Format.Alignment = ParagraphAlignment.Left;
        row.Cells[0].MergeRight = 3;

        this.table.SetEdge(0, 0, 2, 3, Edge.Box, BorderStyle.Single, 0.75, Color.Empty);
    }

   void FillContent()
    {
        string xmlFileName = "C:\Section.xml";
        XPathDocument xPathDocument = new XPathDocument(xmlFileName);
        XPathNavigator item = xPathDocument.CreateNavigator();

        XPathNodeIterator iter = item.Select("/Hello/*");
        while (iter.MoveNext())
        {
            string name = iter.Current.Name;
            item = iter.Current;
            Row row1 = this.table.AddRow();
            Row row2 = this.table.AddRow();

            row1.TopPadding = 1.5;
            row1.Cells[0].Shading.Color = Color.Parse("Gray");
            row1.Cells[0].VerticalAlignment = VerticalAlignment.Center;
            row1.Cells[0].MergeDown = 1;
            row1.Cells[1].Format.Alignment = ParagraphAlignment.Left;
            row1.Cells[1].MergeRight = 3;
            row1.Cells[0].AddParagraph(item.ToString());

            Console.WriteLine(name + "	:" +item);
        }
        Console.ReadKey();
    }

我在使用 MigraDoc 生成 PDF 的 PDF 报告时写入代码 。 我从 PDF Sharp 网站下载了代码 。 以下有 3 个函数 定义Styles ()、 CreatePage ()、 CreatePage () 、 FillContent () 。 我对 CreatePage () 、 FillContent () 功能做了更改 。 但是, 当我运行程序时, 我发现错误 。

Argument out of Exception: Specified argument was out of the range of valid values.

在 CreatePage () 中, 我在一个表格中添加了两行和两列。 在 FillContent () 函数中, 我读取了我的 XML 文件。 但我找不到我跨越索引范围的位置 。

< 强 > SOVED

The problem is when I am setting the table.SetEdge(...). I am accessing the columns that I have not created. Thank u all .. :)

最佳回答

这一步,我正在设置尚未创建的行。

this.table.SetEdge(0, 0, 2, 3, Edge.Box, BorderStyle.Single, 0.75, Color.Empty);

而不是3行,3行是我应该使用的2行数。

问题回答

暂无回答




相关问题
Safest way to copy a file

I need to merg two PDF files. However sometimes a file might be locked up I wrote this code, but I m wondering if it s not the smartest solution: private static int FILE_LOCKED_WAIT_PERIOD = ...

Edit and render RichText

We have an application (a custom network management tool for building automation) that supports printing labels that you can cut out and insert into the devices front displays. In earlier versions of ...

How to add PDFsharp lib in C#?

I am new to C#.net, I downloaded PDFsharp lib. But how to add this lib to our project? My project is to create a PDF file. Please provide me step by step instructions. After unziping it has 32 folders....

热门标签