Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

C# - Drukowanie z HTML

nerx2 28 Maj 2014 21:03 1263 9
  • #1 28 Maj 2014 21:03
    nerx2
    Poziom 11  

    Witam,
    Mam pewien problem z drukowaniem z htmla. Korzystam z VS 2013. Mianowicie wygląda to tak:
    Mam dokument html z szablonem, a podczas drukowanie generuje się drugi gotowy dokument do wydruku. Problem jest tego typu jak zaszyć ten plik html, by po zainstalowaniu aplikacji nie można było go edytować? Oraz drugi problem, gdzie go umieścić? Bo obecnie mam to mało praktycznie zrobione.
    Szablon = System.IO.Directory.GetCurrentDirectory() + @"\szablon.html";
    Gotowy = System.IO.Directory.GetCurrentDirectory() + @"\szablon_go.html";

    Obecnie znajdują się w pliku projektu w katalogu Debug, ale po zainstalowaniu aplikacji, pliki oczywiście giną. Jak to rozwiązać?

    Jeszcze przy okazji podobna rzecz dotyczy biblioteki .dll, jak zaszyć to w instalce, by się sama instalowała?

    Dzięki, pozdrawiam

    0 9
  • Pomocny post
    #2 29 Maj 2014 12:11
    marcinj12
    Poziom 40  

    Nie wiem jak wykorzystujesz później ten szablon, ale myślę, że albo można umieścić go i pobierać z pliku Resources, albo, skoro HTML to tylko zwykły tekst, zawsze możesz go zaszyć w kodzie (np. - ponownie - w Resources) i tworzyć stronę w tymczasowej lokalizacji przed jej użyciem.

    Nie wiem co rozumiesz przez instalację dll'a - generalnie musisz zrobić instalator, z wbudowanego w Visual Studio lub zewnętrznego narzędzia (np. InnoSetup), który ją wypakuje gdzie trzeba, ewentualnie zarejestruje bibliotekę w systemie.

    0
  • #3 29 Maj 2014 21:37
    nerx2
    Poziom 11  

    Dzięki, faktycznie można wrzucić do Resources, tylko jest problem. Wrzuciłem plik do Resources zapisany jako szablon.html i robię tak:

    Kod: csharp
    Zaloguj się, aby zobaczyć kod


    lub

    Kod: csharp
    Zaloguj się, aby zobaczyć kod



    Próbowałem jeszcze tak:

    Kod: csharp
    Zaloguj się, aby zobaczyć kod


    I nie działa, wyrzuca błąd przy stremreaderze - Additional information: Wartość nie może być zerowa. ... Jak to zapisać, zadziałało?

    0
  • #4 30 Maj 2014 09:30
    marcinj12
    Poziom 40  

    Jak wrzucasz do Resources stronę HTML, to ona jest zapisywana jako tekst. Możesz się do niej odwołać jak do zykłego stringa, np.

    Kod: csharp
    Zaloguj się, aby zobaczyć kod
    Nie musisz jej odczytywać jak pliku.

    0
  • #5 30 Maj 2014 10:10
    nerx2
    Poziom 11  

    Tak też próbowałem i mam:

    An unhandled exception of type 'System.ArgumentException' occurred in mscorlib.dll

    Additional information: Niedozwolone znaki w ścieżce.

    0
  • #6 30 Maj 2014 10:49
    marcinj12
    Poziom 40  

    Tak czyli jak??
    Sam napisałeś, że robisz:

    Kod: csharp
    Zaloguj się, aby zobaczyć kod
    I tyle, wczytałeś stronę do zmiennej. nie robisz już nic ze streamreaderem.

    0
  • #7 30 Maj 2014 10:57
    nerx2
    Poziom 11  

    Np.

    Kod: csharp
    Zaloguj się, aby zobaczyć kod


    z Textboxem
    Kod: csharp
    Zaloguj się, aby zobaczyć kod


    W obu przypadkach wyrzuca błąd z niedozwolonymi znakami w linii
    using (StreamReader reader = new StreamReader(tekst.Text))


    Na obecną chwilę rozwiązałem problem w sposób trochę słaby, ale zapisuję ten z plik html z zasobów gdzieś na dysku, a następnie go wczytuję i tak działa.

    0
  • Pomocny post
    #9 30 Maj 2014 11:47
    marcinj12
    Poziom 40  

    Oj, pisałem dwa razy przecież: NIE UŻYWASZ już StreamReadera. :) Po co??
    StreamReader odczytuje dane z pliku którego ścieżkę przekazujesz w konstruktorze - wywala błąd, bo myśli, że podajesz mu ścieżkę do pliku, a Ty przekazujesz mu treść tego pliku. ReadToEnd odczytujesz wszystko do jednej zmiennej typu string - a to już masz od razu odwołując się do Properties.Resources.szablon

    0
  • #10 30 Maj 2014 12:17
    nerx2
    Poziom 11  

    marcinj12 napisał:
    Oj, pisałem dwa razy przecież: NIE UŻYWASZ już StreamReadera. :) Po co??


    :not: Przepraszam, źle zrozumiałem, już rozumiem i działa, dzięki ! :D

    0