PDFsharp - so erstellen Sie eine 2. Seite

Ich kann nicht finden die Dokumentation im PDFsharp, um zu zeigen, wie Sie eine 2. Seite mit C#!

Als ein Beispiel, über in VB6 nutze ich ein PDF-Erstellungs-Methode genannt mjwPDF. Um anzugeben, dass die Seite fertig ist,

objPDF.PDFEndPage

Und eine neue Seite beginnen:

objPDF.PDFNewPage

Meine PDFsharp anfängliche Einstellungen:

//Create a new PDF document
PdfDocument document = new PdfDocument();

//Create an empty page
PdfPage page = document.AddPage();
//page.Contents.CreateSingleContent().Stream.UnfilteredValue;

//Get an XGraphics object for drawing
XGraphics gfx = XGraphics.FromPdfPage(page);

Leider in PDFsharp ich kann nicht herausfinden, wie start - /Schreibzugriff auf eine neue Seite. Ich sehe diese Befehle aber kann nicht eine zweite Seite gestartet.

document.AddPage();
document.InsertPage();

Habe ich versucht, diese beiden aber meine Ausgabe weiter schreibt Sie auf Seite 1 und nicht Seite 2.

Irgendwelche Ideen würde sehr geschätzt werden.

Hier ist der aktuelle code:

private void buttonPrint_Click(object sender, EventArgs e)
{
    //Create a new PDF document
    PdfDocument document = new PdfDocument();

    //Create an empty page
    PdfPage page = document.AddPage();
    //page.Contents.CreateSingleContent().Stream.UnfilteredValue;

    //Get an XGraphics object for drawing
    XGraphics gfx = XGraphics.FromPdfPage(page);

    XPdfFontOptions options = new XPdfFontOptions(PdfFontEncoding.Unicode, PdfFontEmbedding.Always);

    //Create a font
    XFont fontArial20 = new XFont("Arial", 20, XFontStyle.Bold, options);
    XFont fontArial14 = new XFont("Arial", 14, XFontStyle.Regular, options);
    XFont fontArial14Bold = new XFont("Arial", 14, XFontStyle.Bold, options);
    XFont fontArial10 = new XFont("Arial", 10, XFontStyle.Regular, options);
    XFont fontArial10Bold = new XFont("Arial", 10, XFontStyle.Bold, options);
    XFont fontArial9 = new XFont("Arial", 9, XFontStyle.Regular, options);
    XFont fontArial9Bold = new XFont("Arial", 9, XFontStyle.Bold, options);
    XFont fontArial8 = new XFont("Arial", 8, XFontStyle.Regular, options);
    XFont fontArial8Bold = new XFont("Arial", 8, XFontStyle.Bold, options);

    XFont fontCour10 = new XFont("Courier New", 10, XFontStyle.Regular, options);
    XFont fontCour10Bold = new XFont("Courier New", 10, XFontStyle.Bold, options);

    XFont printFontCour8 = new XFont("Courier New", 8, XFontStyle.Regular);
    XFont printFontCour8Bold = new XFont("Courier New", 8, XFontStyle.Bold);
    XFont printFontCour8Italic = new XFont("Courier New", 8, XFontStyle.Italic);
    XFont printFontCour10 = new XFont("Courier New", 10, XFontStyle.Regular);
    XFont printFontCour10Bold = new XFont("Courier New", 10, XFontStyle.Bold);
    XFont printFontCour14 = new XFont("Courier New", 14, XFontStyle.Bold);

    XFont printFontCour10BoldItalic = new XFont("Courier New", 10, XFontStyle.Bold | XFontStyle.Italic);

    XFont printFontArial8 = new XFont("Arial", 8, XFontStyle.Regular);
    XFont printFontArial10 = new XFont("Arial", 10, XFontStyle.Regular);
    XFont printFontArial10Bold = new XFont("Arial", 10, XFontStyle.Bold);
    XFont printFontArial14 = new XFont("Arial", 14, XFontStyle.Bold);

    //Create pen.
    Pen blackPen = new Pen(Color.Black, 3);

    Pen blackPen3 = new Pen(Color.Black, 3);
    Pen blackPen1 = new Pen(Color.Black, 1);
    Pen greyPen1 = new Pen(Color.Gray, 1);
    Pen greyPen3 = new Pen(Color.Gray, 3);
    Pen lightgreyPen1 = new Pen(Color.LightGray, 1);

    //define margins
    double leftMargin = 40.0;
    double rightMargin = 570.0;
    double topMargin = 20.0;
    double lineTop = 0d;
    double lineFooter = 780d;

    double rowStep = 12d;
    //double rowStep = 15d;

    double newRow = topMargin + rowStep;
    double beginRow = newRow;
    double currentRow = beginRow;
    double currentRowCol2 = 0;

    double firstCustomerRow = 100d;
    //double firstCustomerRow = 110d;
    //float firstCustomerRow = 120;
    double txtShift = 8d;

    string hcString = string.Empty; //---added 6-26-13

    //---top section--------------------------------------------------------
    //draw the TIW Logo
    Image Logo = Image.FromFile(Settings.Default.LogoPath);
    gfx.DrawImage(Logo, leftMargin, topMargin);

    //title & version
    string textToPrint = "TIW Purchasing - Master Buy List";
    gfx.DrawString(textToPrint, fontArial14Bold, Brushes.Black, leftMargin + 160, topMargin + 30);

    string eiNum = listView1.Items[0].Text;
    string eiDesc = listView1.Items[0].SubItems[1].Text;
    string partNum = listView1.Items[0].SubItems[2].Text;
    string partDesc = listView1.Items[0].SubItems[3].Text;
    string price = listView1.Items[0].SubItems[4].Text;
    string partType = listView1.Items[0].SubItems[5].Text;
    string partQty = listView1.Items[0].SubItems[6].Text; 

    if (eiDesc.Length > 80)
        eiDesc = eiDesc.Substring(0, 80) + "...";

    textToPrint = eiNum + " - " + eiDesc;
    gfx.DrawString(textToPrint, fontArial10Bold, Brushes.Black, leftMargin, topMargin + 70);

    int lineInc = 70;

    for (int i = 0; i < listView1.Items.Count; i++)
    {
        if (listView1.Items[i].Text == eiNum)
        {
            lineInc = lineInc + 12;

            if (lineInc >= 480)
            {
                //PdfPage page2 = document.AddPage();

                document.AddPage();
                XGraphics.FromPdfPage(page);

                //title & version
                textToPrint = "TIW Purchasing - Master Buy List - (continued)";
                gfx.DrawString(textToPrint, fontArial14Bold, Brushes.Black, leftMargin + 160, topMargin + 30);

                lineInc = 70;
            }

            partNum = listView1.Items[i].SubItems[2].Text;
            partDesc = listView1.Items[i].SubItems[3].Text;
            price = listView1.Items[i].SubItems[4].Text;
            partType = listView1.Items[i].SubItems[5].Text;
            partQty = listView1.Items[i].SubItems[6].Text;

            textToPrint = partNum;
            gfx.DrawString(textToPrint, fontArial10, Brushes.Black, leftMargin + 10, topMargin + lineInc);

            //textToPrint = partDesc.Substring(0, 50);
            textToPrint = partDesc;
            gfx.DrawString(textToPrint, fontArial10, Brushes.Black, leftMargin + 70, topMargin + lineInc);

            textToPrint = price;
            gfx.DrawString(textToPrint, fontArial10, Brushes.Black, leftMargin + 450, topMargin + lineInc);

            textToPrint = partType;
            gfx.DrawString(textToPrint, fontArial10, Brushes.Black, leftMargin + 470, topMargin + lineInc);

            textToPrint = partQty;
            gfx.DrawString(textToPrint, fontArial10, Brushes.Black, leftMargin + 490, topMargin + lineInc);
        }
        else
        {
            lineInc = lineInc + 16;
            eiNum = listView1.Items[i].Text;
            eiDesc = listView1.Items[i].SubItems[1].Text;

            if (eiDesc.Length > 80)
                eiDesc = eiDesc.Substring(0, 80) + "...";

            textToPrint = eiNum + " - " + eiDesc;
            gfx.DrawString(textToPrint, fontArial10Bold, Brushes.Black, leftMargin, topMargin + lineInc);

            lineInc = lineInc + 12;

            partNum = listView1.Items[i].SubItems[2].Text;
            partDesc = listView1.Items[i].SubItems[3].Text;
            price = listView1.Items[i].SubItems[4].Text;
            partType = listView1.Items[i].SubItems[5].Text;
            partQty = listView1.Items[i].SubItems[6].Text;

            textToPrint = partNum;
            gfx.DrawString(textToPrint, fontArial10, Brushes.Black, leftMargin + 10, topMargin + lineInc);

            //textToPrint = partDesc.Substring(0, 20);
            textToPrint = partDesc;
            gfx.DrawString(textToPrint, fontArial10, Brushes.Black, leftMargin + 70, topMargin + lineInc);

            textToPrint = price;
            gfx.DrawString(textToPrint, fontArial10, Brushes.Black, leftMargin + 450, topMargin + lineInc);

            textToPrint = partType;
            gfx.DrawString(textToPrint, fontArial10, Brushes.Black, leftMargin + 470, topMargin + lineInc);

            textToPrint = partQty;
            gfx.DrawString(textToPrint, fontArial10, Brushes.Black, leftMargin + 490, topMargin + lineInc);

        }
    }

    //------ footer
    DateTime dateTime = DateTime.Now;
    String.Format("{0:F}", dateTime);
    textToPrint = "eView " + EViewMethods.eviewVersion + "                       " + Environment.UserName + "                     " + String.Format("{0:F}", dateTime);
    gfx.DrawString(textToPrint, printFontCour8Italic, Brushes.Black, leftMargin, lineFooter);

    SaveFileDialog saveFileDialog1 = new SaveFileDialog();

    saveFileDialog1.Filter = "pdf files (*.pdf)|*.pdf|All files (*.*)|*.*";
    saveFileDialog1.FilterIndex = 1;
    saveFileDialog1.RestoreDirectory = true;

    if (saveFileDialog1.ShowDialog() == DialogResult.OK)
    {
        document.Save(saveFileDialog1.FileName);
        Process.Start(saveFileDialog1.FileName);
    }
}

Hier ist mein korrigierter code:

    private void createPDF()
    {
        //Create a new PDF document
        PdfDocument document = new PdfDocument();

        //Create an empty page
        PdfPage page = document.AddPage();

        //Get an XGraphics object for drawing
        XGraphics gfx = XGraphics.FromPdfPage(page);

        XPdfFontOptions options = new XPdfFontOptions(PdfFontEncoding.Unicode, PdfFontEmbedding.Always);

        //Create fonts
        XFont printFontArial8 = new XFont("Arial", 8, XFontStyle.Regular);
        XFont printFontArial10 = new XFont("Arial", 10, XFontStyle.Regular);
        XFont printFontArial10Bold = new XFont("Arial", 10, XFontStyle.Bold);
        XFont printFontCour10BoldItalic = new XFont("Courier New", 10, XFontStyle.Bold | XFontStyle.Italic);
        XFont printFontArial14 = new XFont("Arial", 14, XFontStyle.Bold);
        XFont printFontCour8 = new XFont("Courier New", 8, XFontStyle.Regular);

        //Create pen.
        Pen blackPen = new Pen(Color.Black, 3);

        float lineInc = 20.0f;
        //--------------------------------------------

        //define margins
        double leftMargin = 40.0;
        //double rightMargin = 570.0;
        double topMargin = 20.0;
        //double lineTop = 0d;
        //double lineFooter = 780d;

        string eiNum = string.Empty;
        string eiDesc = string.Empty;
        string partNum = string.Empty;
        string partDesc = string.Empty;
        string price = string.Empty;
        string partType = string.Empty;
        string partQty = string.Empty;
        string thisEndItem = string.Empty;

        string textToPrint = string.Empty;
        int pageCounter = 0;

        string filename = string.Empty;

        bool morePages = true;

        while (morePages)
        {
            if (pageCounter == 0 && counter == 0)
            {
                //draw image/logo
                Image Logo = Image.FromFile(Settings.Default.LogoPath);
                gfx.DrawImage(Logo, leftMargin, 35f);

                //draw title
                textToPrint = "TIW Purchasing - Master Buy List";
                gfx.DrawString(textToPrint, printFontArial14, Brushes.Black, leftMargin + 160f, 54f);

                //date
                DateTime thisDay = DateTime.Today;
                textToPrint = thisDay.ToString("d");
                gfx.DrawString(textToPrint, printFontArial10, Brushes.Black, leftMargin + 280f, 76f);

                eiNum = listView1.Items[0].Text;
                eiDesc = listView1.Items[0].SubItems[1].Text;

                if (eiDesc.Length > 80)
                    eiDesc = eiDesc.Substring(0, 80) + "...";

                textToPrint = eiNum + " - " + eiDesc;
                gfx.DrawString(textToPrint, printFontArial10Bold, Brushes.Black, leftMargin, topMargin + 90);
            }
            else if (pageCounter > 0)
            {
                double remainder = counter % amtperpage;
                if (remainder == 0) //---means we're at the top of the page
                {
                    //title & version
                    textToPrint = "TIW Purchasing - Master Buy List";
                    gfx.DrawString(textToPrint, printFontArial10Bold, Brushes.Black, leftMargin + 120, 54f);
                    textToPrint = "(continued from page " + page + ")";
                    gfx.DrawString(textToPrint, printFontArial10, Brushes.Black, leftMargin + 400, 54f);
                }
            }

            if (pageCounter == 0)
                lineInc = 90;
            else
                lineInc = 78;

            int stop = counter + amtperpage;

            if (stop > listView1.Items.Count)
                stop = listView1.Items.Count;

            while (counter < stop)
            {
                thisEndItem = listView1.Items[counter].SubItems[0].Text;

                partNum = listView1.Items[counter].SubItems[2].Text;
                partDesc = listView1.Items[counter].SubItems[3].Text;
                price = listView1.Items[counter].SubItems[4].Text;
                partType = listView1.Items[counter].SubItems[5].Text;
                partQty = listView1.Items[counter].SubItems[6].Text;

                if (thisEndItem == eiNum) //---still working on the same end item
                {
                    lineInc += 12;

                    textToPrint = partNum;
                    gfx.DrawString(textToPrint, printFontArial10, Brushes.Black, leftMargin + 10, topMargin + lineInc);

                    if (partDesc.Length > 70)
                        partDesc = partDesc.Substring(0, 70) + "...";
                    textToPrint = partDesc;
                    gfx.DrawString(textToPrint, printFontArial10, Brushes.Black, leftMargin + 70, topMargin + lineInc);

                    textToPrint = price;
                    gfx.DrawString(textToPrint, printFontArial10, Brushes.Black, leftMargin + 600, topMargin + lineInc);

                    textToPrint = partType;
                    gfx.DrawString(textToPrint, printFontArial10, Brushes.Black, leftMargin + 630, topMargin + lineInc);

                    textToPrint = partQty;
                    gfx.DrawString(textToPrint, printFontArial10, Brushes.Black, leftMargin + 670, topMargin + lineInc);
                }
                else //---starting a new end item
                {
                    lineInc += 16;

                    eiNum = listView1.Items[counter].Text;
                    eiDesc = listView1.Items[counter].SubItems[1].Text;

                    if (eiDesc.Length > 80)
                        eiDesc = eiDesc.Substring(0, 80) + "...";

                    textToPrint = eiNum + " - " + eiDesc;
                    gfx.DrawString(textToPrint, printFontArial10Bold, Brushes.Black, leftMargin, topMargin + lineInc);
                }

                counter++;
            }

            //---footer-------------------------------
            DateTime dateTime = DateTime.Now;
            textToPrint = "eView " + EViewMethods.eviewVersion + "                       " + Environment.UserName + "                     " + String.Format("{0:F}", dateTime);
            gfx.DrawString(textToPrint, printFontCour8, Brushes.Black, leftMargin, 1060f);

            printpagenum = pageCounter + 1;
            textToPrint = printpagenum.ToString();
            gfx.DrawString(textToPrint, printFontArial10Bold, Brushes.Black, leftMargin + 740, 1060f);
            //----------------------------------------

            if (counter == listView1.Items.Count)
            {
                morePages = false;
            }
            else
            {
                pageCounter++;
                page = document.AddPage();
                gfx = XGraphics.FromPdfPage(page);
            }
        }

        SaveFileDialog saveFileDialog1 = new SaveFileDialog();

        saveFileDialog1.Filter = "pdf files (*.pdf)|*.pdf|All files (*.*)|*.*";
        saveFileDialog1.FilterIndex = 1;
        saveFileDialog1.RestoreDirectory = true;

        if (saveFileDialog1.ShowDialog() == DialogResult.OK)
        {
            document.Save(saveFileDialog1.FileName);
            Process.Start(saveFileDialog1.FileName);
        }
    }
Hier ist der code in Frage:

InformationsquelleAutor Bob T | 2014-01-15

Schreibe einen Kommentar