Avatar billede linroc Nybegynder
07. december 2005 - 09:12 Der er 17 kommentarer og
1 løsning

vis popup med pdf data i asp.net - c#

Hej,

jeg sidder med en asp.net løsning hvor jeg har et pdf document i memory. Det jeg så gerne vil er at vise et popup vindue med pdf i.

Jeg kan sagtens vise min pdf i det vindue der er igang - men jeg kan ikke finde ud af at vise det i sit eget vindue, det gør jeg sådan her:

MemoryStream m;
m = pdf.getMemStream();  //hvor pdf er et pdf-document
Response.OutputStream.Write(m.GetBuffer(), 0, m.GetBuffer().Length);
Response.OutputStream.Flush();
Response.OutputStream.Close();
Response.End();

Der skal sikkert bruges noget javascript - men det er jeg bestemt ikke en haj til.

mvh
Claus
Avatar billede dr_chaos Nybegynder
07. december 2005 - 09:35 #1
du kan bruge :
<a href="#" onclick="VisPdfRap();">Vis rapport som PDF</a>
hvor VisPdfRap() ser ud på denne måde:
<script type="text/javascript">
function VisPdfRap()
  {
    var winprint=window.open("Pdf.aspx","Rapport","title=afsaf,width=700, Height=650,status=yes,toolbar=no,menubar=no,location=no,scrollbars=yes,left=0,top=0");
    winprint.focus();
  } 
  </script>
Avatar billede dr_chaos Nybegynder
07. december 2005 - 09:36 #2
ovenstående funktion åbner et nyt vindue.
Den kalder en side kaldet pdf.aspx. Du kan bare ændre stien til din side.
Avatar billede linroc Nybegynder
07. december 2005 - 09:59 #3
Det er sådan set meget godt - men jeg har jo netop ikke en fil og henvise til - jeg har et dynamisk document i memory.

Så det jeg egentlig mangler er et script der tager et html/pdf document som input altså: VisRap(doc).

Giver det mening ??
Avatar billede dr_chaos Nybegynder
07. december 2005 - 10:06 #4
hvis du laver en pdf.aspx.
i page load tilføjer du:
MemoryStream m;
m = pdf.getMemStream();  //hvor pdf er et pdf-document
Response.Clear();
Response.ContentType = "application/pdf";
Response.AddHeader("content-length", System.Convert.ToString(m.GetBuffer().Length));
Response.BinaryWrite(m.GetBuffer());
Response.Flush();
Response.End();
Avatar billede dr_chaos Nybegynder
07. december 2005 - 10:06 #5
på den måde streamer du pdf fra hukommelsen til en bruger.
Avatar billede dr_chaos Nybegynder
07. december 2005 - 10:18 #6
virkede det ?
Avatar billede dr_chaos Nybegynder
07. december 2005 - 10:19 #7
det er den løsning jeg har brugt i forskellige forbindelser.
Både med eksterne og interne pdf dokumenter.
Avatar billede linroc Nybegynder
07. december 2005 - 10:27 #8
Nu er jeg ikke helt med - vil du oprette en fysisk fil (pdf.aspx) i pageload og derefter streame til den ??

Hvis det er det du mener så er det nok ikke en holdbar løsning - jeg har mange samtidige brugere. Så det bliver hurtigt et cirkus med at oprette og nedlægge filerne.

Eller har jeg ikke helt fattet konceptet :-)
Avatar billede dr_chaos Nybegynder
07. december 2005 - 10:30 #9
nej hvis du kan få pdf' filen i hukommelsen er det ikke nødvendigt at oprette filer.
Hvordan får du pdf dokumentet i hukommelsen ?
Avatar billede linroc Nybegynder
07. december 2005 - 11:03 #10
Jeg har pdf'en i mem - jeg bruger itextsharp. Den kan returnere pdf'en som en memstream:
MemoryStream m;
m = pdf.getMemStream();
Avatar billede dr_chaos Nybegynder
07. december 2005 - 11:12 #11
så kan du også på en aspx side tilføje i codebehind i page load:

MemoryStream m;
m = pdf.getMemStream();  //hvor pdf er et pdf-document
Response.Clear();
Response.ContentType = "application/pdf";
Response.AddHeader("content-length", System.Convert.ToString(m.GetBuffer().Length));
Response.BinaryWrite(m.GetBuffer());
Response.Flush();
Response.End();

så vil den side blive lavet om til et pdf dokument.
Avatar billede linroc Nybegynder
07. december 2005 - 11:39 #12
ja - men jeg skal jo have pdf'en med over. Den bliver lavet på en side - hvorefter man kan trykke på en knap 'vis pdf' som så skal åbne et nyt vindue med pdf'en i. Jeg har kun pdf'en i mem på den oprindelige side. Den laves dynamisk udfra en masse valg på siden.

Giver det mening ??
Avatar billede dr_chaos Nybegynder
07. december 2005 - 12:16 #13
ja men kan du ikke gemme pdf'en i en session som et byte array ?
og så sende det med ?
Avatar billede linroc Nybegynder
07. december 2005 - 12:32 #14
jo det kunne man måske godt - men det er vel en lidt tung vej gå(jeg tænker på server belastning). Men dog realiserbar :-)
Avatar billede linroc Nybegynder
07. december 2005 - 12:35 #15
Jeg havde bare håbet at der var en måde at spawne et vindue med html'en/pdf'en som parameter.

Men du har hjulpet mig godt på vej - jeg tror jeg gemmer mit pdf object i en sessionvar også henter den i det nye vindue (det nye vindue er vel i samme session ?)

Smid et svar så får du point'ene :-)
Avatar billede dr_chaos Nybegynder
07. december 2005 - 13:11 #16
det nye vindue vil indeholde den session du sender med.
jeg tror ikke at der findes nogen måde at sende pdf eller html med som en parameter med mindre det er en parameter til en fysisk fil.
Avatar billede linroc Nybegynder
07. december 2005 - 13:13 #17
Tak for hjælpen :-)
Avatar billede dr_chaos Nybegynder
07. december 2005 - 13:15 #18
np :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

Udviklings- og Forenklingsstyrelsen

Data engineer til cloud-baseret dataplatform

Netcompany A/S

IT Consultant

Udviklings- og Forenklingsstyrelsen

Ledende domænearkitekt til Moms Domæne-arkitekturteam

Netcompany A/S

Software Developer

Cognizant Technology Solutions Denmark ApS

Test Manager