Przesłanie zawartości DIV jako HTML / SVG

Odpowiedz Nowy wątek
2017-10-09 15:45
0

Tematyka:
zebranie danych z formularza odnośnie zamówienia + sformatowanego tekstu z edytora WYSYWIG ( ckeditor ) i przeslanie do realizacji formularzem z użyciem phpmail()

Problem:
zależy mi na możliwie jak najdokładniejszym odwzorowaniu zawartości DIV'a ( css ) aby to co stworzył można było wydrukować np. na ploterze / drukarce bez obawy o jakieś "rozjazdy".

Rozwiązanie:

  • Dane z CKEditora dostaje w html'u -> ukryty form -> przekazuje zawartość do skryptu php i wuala. Dane odnośnie zamówienia lecą ze na maila ze sformatowanym DIV'em .... ale phpmail nie obsługuje css więc tekst jest rozjechany.
  • Eksport do SVG i przesłanie jako załącznik. Tutaj na start musiałbym uzyć jakiejś klasy php a nie tylko phpmail - ok jeszcze to by przeszło. Jednak najpierw eksport do svg. Szukałem biblioteki JS która dobrze sobie poradzi z zadaniem -> wszystkie które znalazłem mają problem z tekstem i formatowaniem, a to głównie na nim mi zależy. Dodatkowo: Nie będzie w tym divie żadnych obrazów.

Może za bardzo kombinuję?
Może jakieś rozwiązanie typu: przesłanie danych zamówienia a eksport do svg i zapis na bezpośrednio na serwerze do wglądu po odebraniu zamówienia ?


korpo rat, zafascynowany warstwą Front-end.
edytowany 1x, ostatnio: reliktus, 2017-10-09 15:47

Pozostało 580 znaków

2017-10-09 15:58
0

Jest coś takiego:
https://github.com/tijsverkoyen/CssToInlineStyles
To przetworzy Ci Twój kod z css'ów na atrybuty "style" w wersji inline czyli tam gdzie miałeś <h3 class="pogrubiony-i-szeroki"> będziesz miał <h3 style="font-weight:800;width:90%">

Ogólnie temat dosyć nieprzyjemny bo:
nie każdy klient poczty (nie ważne czy appka w telefonie, pc, czy interfejs webowy) - rozpozna/wyświetli Ci te style tak samo.
Co chodzi o druk.... no tu mogą Ci się szerokości rozjechać w zależności od tego na czym będziesz drukował (skalowanie związane np ze stylami odnośnie szerokości, paddingów, marginów).

Skoro masz już koryzstać z tego ckeditora - to polecałbym wywalić niepotrzebne tagi/opcje, tagi/opcje które pozostaną przygotować pod kątem css'ów (czyli po prostu dobrze to przygotować). Miej na uwadze, że użytkownik może coś robić na komórcę i mieć jakieś rwd (o ile Twój projekt to posiada) i już taki tekst będzie inaczej wyglądał w mailu/większym ekranie.

Poza tym istnieje też coś takiego jak http://htmlpurifier.org/ - dzięki niemu możesz sprawdzić poprawność htmla przed jego wysłaniem.

Dodatkowo dałbym też użytkownikowi ekran na którym widziałby jakiś preview tego zanim to gdzieś zostanie wysłane/wydrukowane.

Z podejścia SVG całkowicie bym zrezygnował.

edytowany 1x, ostatnio: axelbest, 2017-10-09 15:59

Pozostało 580 znaków

2017-10-09 16:05
0

Dziękuje serdecznie za odpowiedź.

Odnośnie sugestii:

  • Formatowanie zostało ograniczone w CKEeditorze do wybranych funkcji.
  • Strona jest przygotowana do obsługi bez RWD.
  • Podgląd jest zaimplementowany i "na żywo" w divie "obok"
  • Jeżeli chodzi o formatowanie css to jest on przygotowane w inline - z parametrami z na w3school:
    https://www.w3schools.com/php/func_mail_mail.asp

korpo rat, zafascynowany warstwą Front-end.
edytowany 1x, ostatnio: reliktus, 2017-10-09 16:06

Pozostało 580 znaków

2017-10-09 16:26
0

Nie wiem o co chodzi z tym linkiem do w3c (które ponoć jest bardzo nierzetelnym źródłem informacji) - wyjaśnisz? Nie wiem czy z tego korzystasz - ale polecam jakiś system szablonów np TWIG lub Smarty(ostatni update sprzed roku) - przyda Ci się.

Pozostało 580 znaków

2017-10-09 17:32
0

Link prezentuje wzorzec kodu z użytym przeze mnie kodowaniem w celu przesłania składni html, nie za bardzo wiem jak się ma system szablonów php do prostego skryptu pobierającego i wysyłającego dane z uzyciem natywnego phpmail? Nie jestem ekspertem php ale chyba jednak odpowiedniejsze było by uzycie dokładnej klasy np. phpmailer.

Akurat miałem "pod ręką" link do jak mniemam prawidłowej struktury phpmail na w3school. Dotychczas nie spotkałem się z problemem z kodem tam zawartym - jeżeli jest tam jakiś błąd składni / kodowania to prosiłbym o objaśnienie. Po twojej sugestii oczywiście skonfrontuje to z jakimiś innymi źródłami dla pewności.

Abstrachując może prostszy byłby jakikolwiek eksport po stronie serwera do pliku..
Jakieś sugestie?


korpo rat, zafascynowany warstwą Front-end.
edytowany 1x, ostatnio: reliktus, 2017-10-09 17:36

Pozostało 580 znaków

2017-10-09 19:27
0

Może będę czepliwy - ale link pokazuje tylko jak działa funkcja mail i jak wysłać w niej jakiś string - w przykładzie oprócz zwykłego tekstu został użyty html. Natomiast to co odróżnia html od tekstu to nagłówek maila. Skoro uważasz że użycie phpmailera to pomysł ekspertów - to oboje nimi jesteśmy :) do wysyłki maili lepiej jest używać phpmailera z wielu powodów. Co chodzi o moje uszczypliwości :) to nie wiem czy istnieje coś takiego jak "prawidłowa struktura phpmail" - mail może mieć prawidłowy nagłówek i ciało (header/body). W skrócie:

  1. Używaj phpmailera
  2. Zrób normalny plik html z klasami css
  3. Użyj biblioteki którą podałem - ona zrobi Ci z klas css atrybuty inline w htmlu
  4. Html wygenerowany w punkcie trzecim ustaw jako body maila
  5. Wyślij wszystko ustawiając w phpmailerze nagłówek tak, aby poszło jako html (ale zabezpiecz się też i daj treść maila w normalnym formacie, bo nie każdy ma w czytniku aktywną opcję wyświetlania maili jako html).

Zamiast w3schools lepiej uzywaj https://developer.mozilla.org/pl/ a co chodzi o php - to oficjalna dokumentacja powinna wystarczyć :) no i w razie czego my pomożemy :)

Czy jeszcze mogę w czymś pomóc ? :)

Pozostało 580 znaków

2017-10-09 20:52
0

Dzięki serdecznie za odpowiedź i poświęcony czas na zrozumienie mojego problemu :-)

Rzeczy nad którymi nie musimy się skupiać i nie wiem czy dobrze opisałem to:

  • inline css -> generuje go już z ckeditora
  • odbiorca, ponieważ jest on stały i wybrany zostanie maksymalnie kompatybilny i najmniej problemowy klient pocztowy

Kolejny raz abstrahując: Doszedłem do takiego momentu, że nie wiem czy mimo wysłania tego jako dobrze sformatowany HTML uda mi się to prawidłowo wydrukować niezależnie od klienta pocztowego :-) Kluczowe wydaje mi się wygenerowanie ograniczonego obszaru w pixelach tak aby wyjustowania odbywały się wtym samym zakresie jak widzi to klient.

Jak już wspomniałem w grę wchodziłby jeszcze plik jako załącznik ale nie wiem czy nie prościej zapisać plik na serwerze i zwnou powrót do SVG ...a może PDF.

Na starcie to zagadnienie wydawało się mniej problematyczne.
Myślę że kluczowe jednak powinno być odpowiedzenie na pytanie: Jak zachować maksymalną kompatybilność między tym co stworzy klient a co zostanie dostarczone do odbiorcy? Najbardziej powszechnym, znanym mi sposobem jest PDF...

Aktualnie przestudiuje phpmail lub phpmailera i zaatakuje podejście z wysłaniem kodu html'a przez php z zachowaniem formatowania i zobaczymy jak to wyjdzie.
Następnie będę walczyć z wydrukiem.


korpo rat, zafascynowany warstwą Front-end.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0