Przesłanie zawartości DIV jako HTML / SVG

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 ?

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ł.

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
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ę.

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?

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 ? :)

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.

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