public PrintSheet() { //Create the new document document = new PdfDocument(); document.PageSettings.Orientation = PdfPageOrientation.Landscape; document.PageSettings.Margins.All = 0; //Load the existing documents templatedDocument = new PdfLoadedDocument(@"resources\PrintSheetTemplate.pdf"); //Create a template from the first document PdfLoadedPage loadedPage = templatedDocument.Pages[0] as PdfLoadedPage; template = loadedPage.CreateTemplate(); }
private void luoLaskuBtn_Click(object sender, EventArgs e) { bool voikoLuoda = true; //Luodaan asiakas ja laitetaan asiakkaalle tiedot Asiakas asiakas = new Asiakas(); asiakas.Sukunimi = sukunimiCBox.Text; asiakas.Etunimi = etunimiCBox.Text; asiakas = handler.HaeAsiakasNimellä(asiakas); //Luodaan yritys ja haetaan sille tiedot Yritys yritys = new Yritys(); yritys = handler.HaeYritys(id); DateTime dateAndTime = DateTime.Now; DateTime eräpäivä = dateAndTime.AddDays(14); //Luodaan lasku ja laitetaan laskulle tiedot Lasku lasku = new Lasku(); int laskunID; lasku.Päivämäärä = dateAndTime; lasku.Eräpäivä = eräpäivä; lasku.AsiakasID = asiakas.Id; try { lasku.Laskutuskausi = laskutusCbox.SelectedItem.ToString(); } catch (Exception) { MessageBox.Show("Et valinnut laskutuskautta", "!Huom"); voikoLuoda = false; } if (voikoLuoda == true) { laskunID = handler.TallennaLasku(lasku); string viitenumero; viitenumero = Viitenumero(asiakas, laskunID); // luodaan pdf tiedosto ja sille olennaiset ominaisuudet PdfLoadedDocument loadedDocument = new PdfLoadedDocument(Properties.Resources.laskupohja); PdfLoadedForm loadedForm = loadedDocument.Form; PdfLoadedPage loadedPage = loadedDocument.Pages[0] as PdfLoadedPage; PdfTemplate template = loadedPage.CreateTemplate(); PdfDocument document = new PdfDocument(); document.PageSettings.SetMargins(2); PdfPage page = document.Pages.Add(); PdfGraphics graphics = page.Graphics; graphics.DrawPdfTemplate(template, PointF.Empty, new SizeF(page.Size.Width, page.Size.Height)); PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 20); float veroYhteensä, määrä, verotonHinta, hinta, yhteensä; float.TryParse(hintaTbox.Text, out hinta); float.TryParse(määräTbox.Text, out määrä); verotonHinta = hinta * määrä; veroYhteensä = verotonHinta * 1.24f - verotonHinta; yhteensä = verotonHinta + veroYhteensä; //Viedään tietoa dokumenttiin (loadedForm.Fields[0] as PdfLoadedTextBoxField).Text = dateAndTime.ToString("dd/MM/yyyy"); (loadedForm.Fields[1] as PdfLoadedTextBoxField).Text = "7%"; //Viivästyskorko (loadedForm.Fields[2] as PdfLoadedTextBoxField).Text = laskunID.ToString(); //Laskunumero (loadedForm.Fields[3] as PdfLoadedTextBoxField).Text = asiakas.YTunnus; // Asiakkaan Y-Tunnus (loadedForm.Fields[4] as PdfLoadedTextBoxField).Text = maksuehtoTbox.Text; // Maksuehto (loadedForm.Fields[5] as PdfLoadedTextBoxField).Text = ""; // Viitteemme (loadedForm.Fields[6] as PdfLoadedTextBoxField).Text = eräpäivä.ToString("dd/MM/yyyy"); // Eräpäivä (loadedForm.Fields[7] as PdfLoadedTextBoxField).Text = ""; // Viittenne (loadedForm.Fields[8] as PdfLoadedTextBoxField).Text = toimitusehtoTbox.Text; // Toimitusehto (loadedForm.Fields[63] as PdfLoadedTextBoxField).Text = verotonHinta.ToString(); // Veroton yhteensä (loadedForm.Fields[64] as PdfLoadedTextBoxField).Text = veroYhteensä.ToString(); // ALV yhteensä (loadedForm.Fields[65] as PdfLoadedTextBoxField).Text = yhteensä.ToString(); // Verollinen yhteensä (loadedForm.Fields[70] as PdfLoadedTextBoxField).Text = yhteensä.ToString(); // Yhteensä (loadedForm.Fields[71] as PdfLoadedTextBoxField).Text = EtunimiLbl.Text + " " + sukunimiLbl.Text + "\n" + osoiteLbl.Text + "\n" + postinumeroLbl.Text + " " + postitoimipaikkaLbl.Text; // Asiakkaan tiedot (loadedForm.Fields[68] as PdfLoadedTextBoxField).Text = eräpäivä.ToString("dd/MM/yyyy"); // Eräpäivä (loadedForm.Fields[75] as PdfLoadedTextBoxField).Text = yritys.Nimi + "\n" + yritys.Osoite + "\n" // Laskun lähettäjän tiedot + yritys.Postinumero + " " + yritys.Postiosoite; // Laskun lähettäjän tiedot (loadedForm.Fields[66] as PdfLoadedTextBoxField).Text = yritys.Iban; // IBAN (loadedForm.Fields[67] as PdfLoadedTextBoxField).Text = yritys.Bicswift; // BIC/SWIFT = 67 (loadedForm.Fields[69] as PdfLoadedTextBoxField).Text = viitenumero; // Viitenumero = 69 (loadedForm.Fields[9] as PdfLoadedTextBoxField).Text = nimikeTbox.Text; // Nimike (loadedForm.Fields[10] as PdfLoadedTextBoxField).Text = määräTbox.Text; // Määrä (loadedForm.Fields[11] as PdfLoadedTextBoxField).Text = "kpl"; // Yks. (loadedForm.Fields[12] as PdfLoadedTextBoxField).Text = hintaTbox.Text; // hinta (loadedForm.Fields[13] as PdfLoadedTextBoxField).Text = "24%"; // Alv % (loadedForm.Fields[14] as PdfLoadedTextBoxField).Text = yhteensä.ToString(); // Verollinen yhteensä //Tällä luupilla voi katsoa missä kohdassa mikäkin field on. //for (int i = 0; i < 76; i++) //{ // (loadedForm.Fields[i] as PdfLoadedTextBoxField).Text = i.ToString(); //} // tallenetaan dokumentti loadedDocument.Save("Lasku.pdf"); document.Save("UusiLasku.pdf"); loadedDocument.Close(true); document.Close(true); Process.Start("Lasku.pdf"); // Tarkistetaan onko laskun tiedot saatu tallennettua if (laskunID != 0) { MessageBox.Show("Laskun tiedot tallennettiin tietokantaan", "Huom"); } else { MessageBox.Show("Laskun tietoja ei saatu tallennettua", "Huom"); } } }
/// <summary> /// /// </summary> /// <param name="filePath"></param> /// <param name="bodyHtml"></param> /// <param name="headerHtml"></param> /// <param name="footerHtml"></param> /// <param name="headerHeight"></param> /// <param name="footerHeight"></param> /// <param name="firstPageHeader"></param> /// <returns></returns> public static string HtmlToPdf(string filePath, string bodyHtml, string headerHtml, string footerHtml, int headerHeight = 96, int footerHeight = 96, bool firstPageHeader = false) { string css = ""; string html = ""; using (System.IO.StreamReader r = new System.IO.StreamReader(System.Web.Hosting.HostingEnvironment.MapPath(cssPath))) { css = r.ReadToEnd(); } using (System.IO.StreamReader r = new System.IO.StreamReader(System.Web.Hosting.HostingEnvironment.MapPath(emptyLayoutPath))) { html = r.ReadToEnd().Replace("[[CSS]]", css); } PdfDocument document = new PdfDocument(); document.PageSettings.Size = PdfPageSize.A4; document.PageSettings.SetMargins(0); //Initialize HTML to PDF converter var htmlConverter = new HtmlToPdfConverter(HtmlRenderingEngine.WebKit); //Create new settings var setting = CreateConverterSetting(); var pdfHeader = HeaderHTMLtoPDF(html.Replace("[[HTML]]", headerHtml), headerHeight); var pdfFooter = FooterHTMLtoPDF(html.Replace("[[HTML]]", footerHtml), footerHeight); setting.PdfPageSize = new SizeF(PdfPageSize.A4.Width, PdfPageSize.A4.Height - pdfHeader.Height - pdfFooter.Height); htmlConverter.ConverterSettings = setting; //Convert to PDF var body = html.Replace("[[HTML]]", bodyHtml); PdfDocument docBody = htmlConverter.Convert(body, string.Empty); Stream stream = new MemoryStream(); docBody.Save(stream); docBody.Close(); PdfLoadedDocument pdfLoadedDocument = new PdfLoadedDocument(stream); for (int i = 0; i < pdfLoadedDocument.Pages.Count; i++) { PdfLoadedPage loadedPage = pdfLoadedDocument.Pages[i] as PdfLoadedPage; PdfTemplate template = loadedPage.CreateTemplate(); PdfSection section = document.Sections.Add(); PdfPage page = section.Pages.Add(); PdfGraphics graphics = page.Graphics; if (i == 0) { section.Template.Top = pdfHeader; section.Template.Bottom = FooterHTMLtoPDF(html.Replace("[[HTML]]", footerHtml?.Replace("[[Page]]", "1")?.Replace("[[TotalPage]]", pdfLoadedDocument.Pages.Count.ToString())), footerHeight); } else { if (firstPageHeader) { section.Template.Top = HeaderHTMLtoPDF(html.Replace("[[HTML]]", string.Empty), headerHeight); } else { section.Template.Top = HeaderHTMLtoPDF(html.Replace("[[HTML]]", headerHtml), headerHeight); } section.Template.Bottom = FooterHTMLtoPDF(html.Replace("[[HTML]]", footerHtml?.Replace("[[Page]]", (i + 1).ToString())?.Replace("[[TotalPage]]", pdfLoadedDocument.Pages.Count.ToString())), footerHeight); } graphics.DrawPdfTemplate(template, new PointF(0, pdfHeader.Height), new SizeF(page.Size.Width, page.Size.Height - pdfHeader.Height - pdfFooter.Height)); } //Save the document document.Save(filePath); document.Close(); stream.Dispose(); filePath = filePath.Replace("~", ""); return(filePath); }