从模板创建PDF

时间:2018-10-18 07:42:22

标签: c# html templates pdf

我需要使用c#创建PDF文件。必须是我需要一个模板(例如,可编辑的PDF或HTML模板)。 在此模板中,我必须插入文本和Picuture。

我不知道该怎么做。有人可以说我可以使用的技术吗?

2 个答案:

答案 0 :(得分:1)

您可以通过NuGet使用PdfSharp插件。只需创建html模板文件,将其读取为字符串,替换所需的内容,然后将完整的html传递给以下功能即可。

using TheArtOfDev.HtmlRenderer.PdfSharp;

    public static bool PdfSharpConvert(String html, string SaveTo)
    {
        try
        {
            using (var pdf = PdfGenerator.GeneratePdf(html, PdfSharp.PageSize.A4))
            {
                pdf.Save(SaveTo);
            }

            return true;
        }
        catch (Exception er)
        {
            return false;
        }
        finally
        {
            GC.Collect();
        }
    }

答案 1 :(得分:0)

您可以使用iTextSharp.dll通过c#程序创建PDF。借助此功能,您可以创建列表,项目符号要点,表格等。我已经在许多企业级应用程序中使用过它来创建PDF报表。

例如,创建以下文档 enter image description here 您将需要以下代码:

Document doc = new Document(iTextSharp.text.PageSize.A4_LANDSCAPE, 25, 25, 43, 35);
            PdfWriter wri = PdfWriter.GetInstance(doc, new FileStream("C:\\test\\Updated_INVOICE#" + textBox45.Text + ".pdf", FileMode.Create));
            doc.Open();

            var myFont11 = FontFactory.GetFont("NewJune", 18, BaseColor.BLACK);
            var p1 = new Paragraph("AK TRAVEL GLOBAL LTD.\n", myFont11);
            doc.Add(p1);

            var AddFont = FontFactory.GetFont("NewJune", 8, BaseColor.BLACK);
            var p23 = new Paragraph("91 HIGH ST\nDUDLEY DY1 1QP\nPhone 01384 255777  Fax 08714 310690", AddFont);
            p23.Alignment = 23;
            doc.Add(p23);

            var myFont = FontFactory.GetFont("NewJune", 12, BaseColor.BLACK);
            var myFont1 = FontFactory.GetFont("NewJune", 30, BaseColor.GRAY);
            var p2 = new Paragraph("INVOICE\n\n", myFont1);
            p2.Alignment = 2;
            doc.Add(p2);

            var p3 = new Paragraph("INVOICE # " + textBox45.Text.ToString() + "\n", myFont);
            p3.Alignment = 2;
            doc.Add(p3);

            var p4 = new Paragraph("DATE: " + DateTime.Now.ToString(), myFont);
            p4.Alignment = 2;
            doc.Add(p4);

            var myFont12 = FontFactory.GetFont("NewJune", 26, BaseColor.BLACK);
            var pg1 = new Paragraph("BILL NUMBER - " + textBox45.Text, myFont12);
            pg1.Alignment = 1;
            doc.Add(pg1);

            PdfPTable table1 = new PdfPTable(2);
            table1.SpacingBefore = 50;

            var myFont111 = FontFactory.GetFont("NewJune", 25, BaseColor.BLACK);
            table1.AddCell(new PdfPCell(new Phrase("TO:", myFont111)));
            table1.AddCell(new PdfPCell(new Phrase("SHIP TO:", myFont111)));
            table1.AddCell(getCell("", PdfPCell.ALIGN_LEFT));
            table1.AddCell(getCell("", PdfPCell.ALIGN_RIGHT));
            table1.AddCell(getCell(textBox53.Text, PdfPCell.ALIGN_LEFT));
            table1.AddCell(getCell(textBox50.Text, PdfPCell.ALIGN_RIGHT));
            table1.AddCell(getCell(textBox52.Text, PdfPCell.ALIGN_LEFT));
            table1.AddCell(getCell(textBox49.Text, PdfPCell.ALIGN_RIGHT));
            table1.AddCell(getCell(textBox51.Text, PdfPCell.ALIGN_LEFT));
            table1.AddCell(getCell(textBox48.Text, PdfPCell.ALIGN_RIGHT));
            table1.AddCell(getCell("", PdfPCell.ALIGN_LEFT));
            table1.AddCell(getCell(textBox47.Text, PdfPCell.ALIGN_RIGHT));

            doc.Add(table1);

            PdfPTable table = new PdfPTable(6);
            table.SpacingBefore = 20;
            table.DefaultCell.BorderWidth = 2;
            table.HorizontalAlignment = Element.ALIGN_CENTER;
            PdfPCell cell = new PdfPCell(new Phrase("ITEM"));
            cell.HorizontalAlignment = 1;
            table.AddCell(cell);
            PdfPCell cell1 = new PdfPCell(new Phrase("DESCRIPTION"));
            cell1.Colspan = 3;
            cell1.HorizontalAlignment = 1;
            table.AddCell(cell1);
            PdfPCell cell2 = new PdfPCell(new Phrase("UNIT PRICE"));
            cell2.HorizontalAlignment = 1;
            table.AddCell(cell2);
            PdfPCell cell3 = new PdfPCell(new Phrase("TOTAL"));
            cell3.HorizontalAlignment = 1;
            table.AddCell(cell3);

            //New Row
            PdfPCell cell4 = new PdfPCell(new Phrase(textBox41.Text.ToString()));
            cell4.HorizontalAlignment = 1;
            //cell4.Rowspan = 5;
            table.AddCell(cell4);

            PdfPCell cell5 = new PdfPCell(new Phrase(textBox43.Text.ToString() + "KG\n" + textBox40.Text.ToString()));
            cell5.HorizontalAlignment = 0;
            cell5.Colspan = 3;
            //cell5.Rowspan = 5;
            table.AddCell(cell5);

            PdfPCell cell6 = new PdfPCell(new Phrase(textBox44.Text.ToString()));
            cell6.HorizontalAlignment = 1;
            //cell6.Rowspan = 5;
            table.AddCell(cell6);

            PdfPCell cell7 = new PdfPCell(new Phrase("£" + textBox42.Text.ToString()));
            cell7.HorizontalAlignment = 1;
            //cell7.Rowspan = 5;
            table.AddCell(cell7);

            //New Row
            PdfPCell cell34 = new PdfPCell(new Phrase(textBox67.Text.ToString()));
            cell34.HorizontalAlignment = 1;
            //cell4.Rowspan = 5;
            table.AddCell(cell34);

            PdfPCell cell35 = new PdfPCell(new Phrase(textBox69.Text.ToString() + "KG\n" + textBox66.Text.ToString()));
            cell35.HorizontalAlignment = 0;
            cell35.Colspan = 3;
            //cell5.Rowspan = 5;
            table.AddCell(cell35);

            PdfPCell cell36 = new PdfPCell(new Phrase(textBox70.Text.ToString()));
            cell36.HorizontalAlignment = 1;
            //cell6.Rowspan = 5;
            table.AddCell(cell36);

            PdfPCell cell37 = new PdfPCell(new Phrase("£" + textBox68.Text.ToString()));
            cell37.HorizontalAlignment = 1;
            //cell7.Rowspan = 5;
            table.AddCell(cell37);

            //new row
            PdfPCell cell8 = new PdfPCell(new Phrase("SUBTOTAL"));
            cell8.HorizontalAlignment = 2;
            cell8.Colspan = 5;
            table.AddCell(cell8);

            PdfPCell cell9 = new PdfPCell(new Phrase("£" + textBox37.Text.ToString()));
            cell9.HorizontalAlignment = 1;
            table.AddCell(cell9);

            PdfPCell cell10 = new PdfPCell(new Phrase("BAG"));
            cell10.HorizontalAlignment = 2;
            cell10.Colspan = 5;
            table.AddCell(cell10);

            PdfPCell cell11 = new PdfPCell(new Phrase("£" + (float.Parse(textBox36.Text.ToString()) * 3).ToString()));
            cell11.HorizontalAlignment = 1;
            table.AddCell(cell11);

            PdfPCell cell12 = new PdfPCell(new Phrase("SHIPPING & HANDLING"));
            cell12.HorizontalAlignment = 2;
            cell12.Colspan = 5;
            table.AddCell(cell12);

            PdfPCell cell13 = new PdfPCell(new Phrase("£" + textBox39.Text.ToString()));
            cell13.HorizontalAlignment = 1;
            table.AddCell(cell13);

            PdfPCell cell14 = new PdfPCell(new Phrase("TOTAL DUE"));
            cell14.HorizontalAlignment = 2;
            cell14.Colspan = 5;
            table.AddCell(cell14);

            PdfPCell cell15 = new PdfPCell(new Phrase("£" + textBox38.Text.ToString()));
            cell15.HorizontalAlignment = 1;
            table.AddCell(cell15);

            doc.Add(table);
            var mFont = FontFactory.GetFont("NewJune", 18, BaseColor.BLACK);
            var pr = new Paragraph("\n\nTerms & Conditions\n", mFont);
            doc.Add(pr);

            RomanList romanList = new RomanList(true, 20);
            romanList.IndentationLeft = 30f;
            var lFont = FontFactory.GetFont("NewJune", 8, BaseColor.BLACK);
            char[] diff = { '#' };
            string cat = string.Empty;
            foreach (InvoiceModel invc in Invoices_lst)
            {
                if (invc.InvoiceNo == textBox45.Text)
                    cat = invc.cat;
            }

            if (cat == "air")
            {
                q = air_inv;
            }
            else
            {
                q = sea_inv;
            }
            string[] words = q.Split(diff);
            for (int i = 0; i < words.Length; i++)
            {
                romanList.Add(new ListItem(words[i], lFont));
            }

            doc.Add(romanList);
            doc.Close();

您可以找到有关如何使用它的详细信息HERE