Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Artiklar / Titel på artikeln

Skapa PDF:er i ASP.NET

Postad 2006-07-19 av Anna Allberg i sektionen ASP.NET, C#, Okategoriserat med 1 Kommentarer | Läst av: 9887, Betyg: 93%

Förord

Den artikeln beskriver hur du mycket enkelt kan skapa pdf-dokument i din ASP.NET-applikation.
Innehåll
  » Varför pdf-utskrifter?
  » Kod:
  » Förklaring av koden:


Varför pdf-utskrifter?

Ibland vill man att användare ska kunna skriva ut eller spara ned data som presenteras i en webbapplikation på ett enkelt och praktiskt sätt. Att låta dem skriva ut eller spara ned själva webbsidan är i allmänhet inte ett optimalt alternativ, speciellt inte om det är en rapport av något slag som ska skrivas ut. Då fungerar en anpassad pdf-utskrift alldeles utmärkt.

I exemplet nedan så använder jag mig av open-sourcebiblioteket iTextSharp http://itextsharp.sourceforge.net/.

Nedanstående kod skapar ett pdf-dokument med 2 sidor, en sida med en text och en sida med en tabell. Jag visar först hela koden sedan ett förtydligande av de olika delarna. Jag har inte lagt ned någon strörre ansträngning på layouten utan koncenterar mig på själva skapandet av pdf-dokumentet och hur man skickar det till användaren.


Kod:



using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using iTextSharp.text;
using iTextSharp.text.pdf;
using System.IO;
using System.Globalization;

.....
.......
.......

MemoryStream stream = new MemoryStream();
Document document = new Document(PageSize.A4.Rotate());
PdfWriter.GetInstance(document,stream);
document.Header = new HeaderFooter(new Phrase("Mitt pdf-dokument"),false);
document.Footer = new HeaderFooter(new Phrase("Sida "),true);
document.Open();

//Add a first page
document.Add(new Phrase("Det här är förstasidan i mitt pdf-dokument!!!"));
document.NewPage();

//create table
PdfPTable table = new PdfPTable(2);
table.WidthPercentage = 50;
table.DefaultCell.BorderWidth = 1;
table.DefaultCell.Padding = 2;
float[] headerwidths = {10, 5}; //percent
table.SetWidths(headerwidths);

//fonts for the table
BaseFont bf = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
iTextSharp.text.Font headerfont = new iTextSharp.text.Font(bf, 15, iTextSharp.text.Font.BOLD);
BaseFont bodybf = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
iTextSharp.text.Font bodyfont = new iTextSharp.text.Font(bodybf, 12, iTextSharp.text.Font.NORMAL);

//Add table headers
table.AddCell(new Phrase("Datum",headerfont));
table.AddCell(new Phrase("Dag",headerfont));

//Add table data
DateTime date = DateTime.Now;
for(int i=0; i<7; i++)
{
date = date.AddDays(i);
table.AddCell(new Phrase(date.ToString().Substring(0,10),bodyfont));
table.AddCell(new Phrase(DateTimeFormatInfo.CurrentInfo.GetDayName(date.DayOfWeek).Substring(0,3),bodyfont));
}
document.Add(table);
document.Close();

//Send to browser
Response.ContentType = "Application/pdf";
Response.AddHeader("Content-Disposition", "attachment; filename=myPDFfile.pdf");
Response.OutputStream.Write(stream.GetBuffer(),0,stream.GetBuffer().Length);
Response.End();
stream.Close();

......
......
.....



Förklaring av koden:


Skapa ett pdf-dokument med liggande utskrift.


MemoryStream stream = new MemoryStream();
Document document = new Document(PageSize.A4.Rotate());
PdfWriter.GetInstance(document,stream);


Lägg till ett sidhuvud och en sidfot samt öppna dokumentet för redigering. I sidhuvudet står texten "Mitt pdf-dokument" och i sidfoten "Sida " + sidnummer.


document.Header = new HeaderFooter(new Phrase("Mitt pdf-dokument"),false);
document.Footer = new HeaderFooter(new Phrase("Sida "),true);
document.Open();


Lägg till texten "Det här är förstasidan i mitt pdf-dokument!!!" och gör en sidbrytning.


document.Add(new Phrase("Det här är förstasidan i mitt pdf-dokument!!!"));
document.NewPage();


Skapa en tabell med 2 kolumner.


PdfPTable table = new PdfPTable(2);
table.WidthPercentage = 50;
table.DefaultCell.BorderWidth = 1;
table.DefaultCell.Padding = 2;
float[] headerwidths = {10, 5}; //percent
table.SetWidths(headerwidths);


Skapa två olika fonter att använda till tabellen.


BaseFont bf = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
iTextSharp.text.Font headerfont = new iTextSharp.text.Font(bf, 15, iTextSharp.text.Font.BOLD);
BaseFont bodybf = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
iTextSharp.text.Font bodyfont = new iTextSharp.text.Font(bodybf, 12, iTextSharp.text.Font.NORMAL);


Skapa en tabellrad med rubriker till kolumnerna och använd den ena av de fonter vi skapade ovan.


table.AddCell(new Phrase("Datum",headerfont));
table.AddCell(new Phrase("Dag",headerfont));


Fyll tabellen med data, i det här exemplet lägger vi till 7 rader med dagens datum + 6 dagar framåt. I första kolumnen står datumet och i andra kolumnen den tillhörande dagen. Vi använder här den andra fonten vi skapade.


DateTime date = DateTime.Now;
for(int i=0; i<7; i++)
{
date = date.AddDays(i);
table.AddCell(new Phrase(date.ToString().Substring(0,10),bodyfont));
table.AddCell(new Phrase(DateTimeFormatInfo.CurrentInfo.GetDayName(date.DayOfWeek).Substring(0,3),bodyfont));
}


Lägg till tabellen till dokumentet och stäng dokumentet för redigering.


document.Add(table);
document.Close();


Döp filen till "myPDFfile.pdf" och skicka det färdiga dokumentet till användaren.


Response.ContentType = "Application/pdf";
Response.AddHeader("Content-Disposition", "attachment; filename=myPDFfile.pdf");
Response.OutputStream.Write(stream.GetBuffer(),0,stream.GetBuffer().Length);
Response.End();
stream.Close();


Lycka till med dina pdf-utskrifter!!


Upp

1 Kommentarer


  1. Mats Järnmalm
    25 sep 2012

    itext måste väl installeras på servern? Svårt att hitta info om detta och tacksam för hjälp

Skriv en kommentar på artikeln

Ditt betyg på artikeln



Kommentar:





Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 153
27 952
271 704
1 108
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies