PDFsharp installieren

Könntest Du mal den Code anschauen, den ich geschickt habe ?
Wie soll die Response.BinaryWrite - Methode genau aussehen? Ich hab Null Plan
wie ich das zusammen mit den beiden responses machen soll.
Wäre toll, denn ich such mir nen wolf

Krop
 
Hallo
Ich habs jetzt so gemacht.

Code:
Document document = new Document(PageSize.A4, 72, 72, 72, 72);
        PdfWriter writer = PdfWriter.GetInstance(document,
                new FileStream("MeinPDFFile.pdf",
                    FileMode.Create));
        document.AddAuthor("Giovanni Scarlata");
        document.AddCreationDate();
        document.AddCreator("xxxxxx");
        document.AddHeader("MeinPDFFile", "Eine Test PDF");
        
        document.Open();

        List list = new List(true, 20);
        list.Add("Das ist ein erster Listentext");
        list.Add("eine Tabelle MUSS folgen");
        list.Add("was sonst in der Liste steh? keiner weiss es");
        document.Add(list);

        list.Symbol = new Chunk("\u2022", FontFactory.GetFont(FontFactory.HELVETICA, 20));


        document.Add(new Phrase("einfach ein neuer Satz dazu und fertig"));

        document.Close();
        
        Response.ContentType = "application/pdf";
        Response.AppendHeader("Content-Disposition", "attachment; filename=MeinPDFFile.pdf");
        long  FileSize;

         FileStream  MyFileStream = new FileStream("MeinPDFFile.pdf", FileMode.Open);

        FileSize = MyFileStream.Length;

        byte[] Buffer = new byte[(int)FileSize];
        MyFileStream.Read(Buffer, 0, (int)FileSize);
        MyFileStream.Close();

        Response.Write("<b>File Contents: </b>");
        Response.BinaryWrite(Buffer);

Lokal gehts, aber vom Server aus krieg ich dies
Der Zugriff auf den Pfad "c:\windows\system32\inetsrv\MeinPDFFile.pdf" wurde verweigert.

Krop
 
Du musst in einem Ordner speichern, in dem du auch wirklich schreiben darfst.
Wenn du bei ASP.net einen relativen Pfad nimmst, versuchst du im System32 Ordner zu speichern.

Mit Server.MapPath kannst du einen Pfad innerhalb deiner ASP.net Anwendung in einen absoluten Pfad am Server umwandeln welchen du zum Speichern (und lesen) deiner Datei verwenden kannst.
 
Supa!

Klappt. yeah! darf ich Dich Hebamme nennen ?
War ja ne schwere Geburt.

Ich setz hier mal den Code für nachfolgende Generationen rein.

Thema: PDF erstellen und dann beim User berDownloaddialog abspeichern:


PHP:
Document document = new Document(PageSize.A4, 72, 72, 72, 72);
        PdfWriter writer = PdfWriter.GetInstance(document,
                                        new FileStream(Server.MapPath("./") +"MeinPDFFile.pdf",
                                       FileMode.Create));
        document.AddAuthor("ich & ich");
        document.AddCreationDate();
        document.AddCreator("xxxxxx");
        document.AddHeader("MeinPDFFile", "Eine Test PDF");
        
        document.Open();

        List list = new List(true, 20);
        list.Add("Das ist ein erster Listeneintrag");
        list.Add("ein zweiter Listeneintrag");
        list.Add("was sonst in der Liste steht? keiner weiss es");
        document.Add(list);

        list.Symbol = new Chunk("\u2022", FontFactory.GetFont(FontFactory.HELVETICA, 20));


        document.Add(new Phrase("So kommt einfach ein neuer Satz dazu und fertig"));

        document.Close();
        
        Response.ContentType = "application/pdf";
        Response.AppendHeader("Content-Disposition", "attachment; filename=MeinPDFFile.pdf");
        long  FileSize;

        FileStream MyFileStream = new FileStream(Server.MapPath("./") + "MeinPDFFile.pdf", FileMode.Open);

        FileSize = MyFileStream.Length;

        byte[] Buffer = new byte[(int)FileSize];
        MyFileStream.Read(Buffer, 0, (int)FileSize);
        MyFileStream.Close();


        Response.BinaryWrite(Buffer);

Dank an Dich

Krop
 
Hi.

Schön das es nun klappt. :)

Hätte da noch aber ein paar kleine Vorschläge/Hinweise für dich:

* Speichere den Pfad zur Datei in eine Variable, dann brauchst du nicht 2 mal MapPath verwenden. Ausserdem kannst du direkt den Dateinamen in den MapPath-Aufruf geben (bei dir also Server.MapPath("./meinpdf.pdf")) damit sparst dir deine Stringverkettung.

* Der Dateiname den du beim Content-Disposition-Header angibst muss nicht dem originalen Dateinamen entsprechen.

* Wenn du schon die Datei am Server speicherst bietet sich der Befehl Server.TransmitFile an. Damit sparst du dir das einlesen der Datei in dein Bytearray. Wenn du es aber schon so machst, könntest du nach dem Einlesen der Datei diese auch gleich löschen. Dann liegt sie nicht unnütz am Server rum und kann auch nicht durch erraten des Pfades von anderen heruntergeladen werden.

lg, und noch nen schönen Sonntag,
Alex
 

Neue Beiträge

Zurück