02. november 2010 - 05:02 Der er 12 kommentarer og
1 løsning

window.print() to file

Jeg skal fra en webside sende et kopi af den webside med email.  Det er tilstraekkeligt at det bliver et billed af siden.

Hvis jeg fra siden bruger kommandoen window.print() saa sendes siden til printeren hvor et billed af siden saa udtrykkes paa papir.  Ville det vaere muligt i stedet at sende et billed af siden til en fil som saa kunne indsaettes som attachment til en mail?  Eller kan jeg goere brug af en slags HTMLtoPDF eller HTMLtoImage kommando der indfanger et billed af siden?

Eller er det min fantasi der loeber loebsk?
Avatar billede keysersoze Ekspert
02. november 2010 - 09:16 #1
print får du i hvert fald ikke meget ud af medmindre brugeren selv printer til en fil og starter sin mail-klient op. Et komponent som du er inde på vil være en oplagt muligt da du så fx er uafhængig af om klienten kan læse HTML - en anden mulighed er at du bare læser HTML fra din URL via et komponent, det er fx ret simpelt i ASP.NET, og så kan du sende den direkte med.
02. november 2010 - 10:34 #2
Tak for dit indlaeg.  Nu maa du forstaa hvor jeg kommer fra, en amatoer der foerst for nyligt begyndte at leje med hjemmesider bortset fra det mest elementaere. 

(1)  Jeg var ikke klar over at jeg var inde paa et komponent, men jeg er glad for at du synes det er en oplagt mulighed.  Kunne du maaske fortaelle mig mere om hvordan jeg danner et komponent?

(2)  Siden dannes dynamisk med data fra databasen ud fra de valg brugeren goer.  Der er et eksempel her: http://poststamp.dk/ScreenHunter.gif og koden til siden sidder her: http://pastebin.com/LQeCxumd .  Jeg proevede at aabne en dannet siden og kopiere html koden og bruge den i en browser.  Det saa ikke godt ud, formatteringen var forkert og der var ingen billeder.  Jeg bruger php.  Maaske faar jeg et bedre resultat gennem asp.net.  Kunne du fortaelle mig hvordan jeg kan gribe det an?
Avatar billede intenz Novice
02. november 2010 - 14:37 #3
Det er ikke særlig nemt at gøre det du vil. Er det virkelig nødvendigt?

Du kan se om du kan bruge noget herfra:
http://stackoverflow.com/questions/757675/website-screenshots-using-php
Avatar billede keysersoze Ekspert
02. november 2010 - 17:54 #4
Et komponent er, hvis vi taler ASP, noget webhotellet skal understøtte da ASP i sig selv ikke kan særlig meget - så skal der manipuleres med billeder, sendes mails, uploades eller lignende kræver det et komponent. Taler vi ASP.NET er der en masse klasser indbygget til at håndtere dette - alternativt kan man selv inkludere dem i sit projekt eller lave class-libraries selv hvis man ikke kan finde egnede færdige komponenter. PHP lægger sig beskrivelsesmæssigt nok tættest op af ASP.NET - men har aldrig arbejdet med PHP.

Hvis du laver en kopi af HTML'en og formattering/billeder mangler det skyldes det at referencen til dem ikke er korrekt set i forhold til hvor kilden eksekveres - hvis et link fx bare hedder /img.gif aner min klient ikke hvor dette billede ligger og derfor skal du have fuld sti på fx domain.dk/img.gif eller også skal du sætte en base i toppen af din side.

Om du benytter ASP, PHP eller ASP.NET gør ingen forskel - det er kun vejen til målet der er forskellig.
02. november 2010 - 17:57 #5
intenz, du spoerger om det virkelig er noedvendigt.  Jeg er ved at (proeve at) lave noget for en der aabenbart synes det er noedvendigt.

Jeg har ploejet gennem det link du gav og links fra det link.  Det synes alt sammen at dreje sig om programmer og plug-ins hvormed man kan lave screenshots, muligvis paa linie med Wisdomsoft Screenhunter som jeg selv bruger regelmaessigt.  Men det er noedt til at virke programmatisk saaledes at naar brugeren trykker paa 'send' saa dannes billedet af siden automatisk og vedhaefter sig mailen.

Baade paa denne traad og paa en tidligere hvor jeg presenterede problemet fra en anden vinkel, http://www.eksperten.dk/spm/922401#reply_7674689 , har jeg faaet et antal forslag, men naar jeg proever at foelge forslagene op er de loebet ud i sandet.

Jeg forestillede mig at nu hvor siden er dannet og paa skaermen at der saa kunne vaere en slags indbygget kommando der i stedet for at formattere den for print kunne formattere den som et billede.  Men det er der desvaerre ingen der har kunnet henvise mig til.
Avatar billede keysersoze Ekspert
02. november 2010 - 18:45 #6
Det har den ganske naturlige forklaring at det ikke findes - du er nødt til at lave en del serverside-arbejde, fx et komponent der kan læse din HTML og så enten sende det direkte afsted eller omdanne det til en fil. Et gæt er at du skal benytte enten http://php.net/manual/en/function.fopen.php eller http://php.net/manual/en/function.file-get-contents.php

Alt afhængig af hvordan du har mulighed for at strukturere koden kunne du også lave din PHP så du både kunne outputte til skærm og til en string - fx (pseudo-kode);

html = "linje 1"
html += linje 2"
html += linje 3"
if var = "mail" then
  sendmailmethod(html)
else
  response.write html
end if
02. november 2010 - 21:26 #7
keysersoze, det maa jeg lige taenke over og studere.  Jeg vender tilbage, men maaske tager det lidt tid.
04. november 2010 - 21:32 #8
Keysersoze (og andre,) jeg har to traade gaaende for to sider af det samme problem, denne traad hvor jeg proever at danne et billed af en webside for at sende den med en email og http://www.eksperten.dk/spm/922401 hvor jeg proever at lave en streng der representerer siden og som skal sendes med emailen.  Det er "way over my head," derfor gaar det langsomt, og lige for tiden er jeg aktiv paa den anden traad hvor jeg lige har oprettet et nyt indlaeg.  Hvis jeg maa opgive paa denne traad skal jeg under alle omstaendigheder soerge for at den bliver lukket og forhaabenlig med afgivelse af points.  Vi tales ved.
06. november 2010 - 13:11 #9
Keysersoze, du siger, tror jeg, at det ikke kan lade sig goere programmatisk at skabe en fil der indeholder et image af den side jeg ser paa skaermen.  Har jeg forstaaet det korrekt?

I stedet skal jeg proeve at lave en streng der representerer siden, vel at maerke paa en saadan maade at strengen baade kan bruges til at indsaette i en email og kan echoes til skaermen.

Jeg tror det er det jeg har gjort i http://www.eksperten.dk/spm/923105 #9 som svar paa et spoergsmaal.  Det virker fint, og det var en god oevelse paa dette problem.

Men den side indeholder kun tekst, ingen images.  Den side jeg skal sende er en indkoebskurv.  Hver genstand i indkoebskurven indeholder et billed, siden indeholder adskillige icons, og siden er formatteret ifoelge en css fil.  Strengen echoes fint paa siden med billeder, iconer, og formattering, men naar strengen indsaettes i emailen bliver resultatet uden billeder, iconer, og formattering.  Saa jeg har, med hjaelp fra denne og andre traade, arbejdet mig frem til at kaerneproblemet er at inkludere images og formattering.

Denne traad er ved at smelte sammen med http://www.eksperten.dk/spm/922401 hvor jeg staar med samme restspoergsmaal.  (Det har ikke vaeret min mening at lave duplikate spoergsmaal, spoergsmaalene gik paa to aspekter af et problem som nu viser sig at smelte sammen.)

Jeg haaber paa din (eller andres) videre hjaelp i denne sag.
06. november 2010 - 13:29 #10
Foerst nu ser jeg at hvor jeg paa den anden traad sad og ventede paa indlaeg var der allerede kommet et indlaeg kort efter mit sidste indlaeg.  Det gav mig nogle ideer (billeder naturligvis med absolut i stedet for relativ sti) som jeg giver mig til at arbejde med nu.
Avatar billede keysersoze Ekspert
06. november 2010 - 14:01 #11
Det kan sagtens lade sig gøre at lave et billede - det kræver bare et komponent til det. Til gengæld mener jeg at det er en dårlig idé at sende et billede ud - en mail med reel tekst osv er klart bedre.

i mit indlæg #4 gav jeg forklaring på hvorfor billeder forsvandt og hvordan det kunne løses. absolut sti som du nu har fundet ud af er en mulighed mens det jeg foreslog var at sætte en <base> ind i toppen af siden.

Nu kan der selvfølgelig være en grund til at du gerne vil have præcis det samme både på skærm og i email - men ofte kan det være en fordel ikke at blande tingene sammen og derfor lave indhold specifikt til web og lave indhold specifikt til mail. Sender man en mail er det en god ide både at sende plaintext og html afsted ligesom det let kan give mening at gøre indholdet og html'en mere simpel til mail end til web. Det vil selvfølgelig give lidt gentagende kode både at have en indkøbskurv til web og en til mail men så kan man også målrette indhold og udseende betydelig bedre.
08. november 2010 - 06:48 #12
keysersoze, jeg lukker denne traad.  Jeg er nu i stand til at sende emailen med billed.  (Om det er en god ide ved jeg ikke, men det er et krav fra den jeg udvikler for.)  Som du nok har forstaaet gik meget af det du sagde hen over hovedet paa mig i begyndelsen, men ved hjaelp af din taalmodighed og lignende hjaelp jeg fik paa en anden traad er jeg kommet et langt stykke vej.  Laegger du et svar?

intenz, ogsaa tak for interesse og indlaeg.
Avatar billede keysersoze Ekspert
08. november 2010 - 10:13 #13
svar :)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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