![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 278 Pomógł: 35 Dołączył: 25.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
Jako że jest to mój pierwszy post na tym forum, chciałbym się przywitać (IMG:style_emoticons/default/smile.gif)
A zatem witam szanowne grono! I przejdę od razu do rzeczy. Rozchodzi się o to w jaki sposób mogę policzyć długość zadanego tekstu (nie chodzi tu oczywiście o liczbę znaków a o długość wyrażoną w milimetrach na przykład ) używając PHP. Zależne to będzie na pewno od czcionki, jej rozmiaru stylu i tego jaki mamy tekst, z tym że nie wiem w jaki sposób ... (IMG:style_emoticons/default/sadsmiley02.gif) Może ktoś miał podobny problem, to byłbym wdzięczny, gdyby się podzielił rozwiązaniem (IMG:style_emoticons/default/smile.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%) ![]() ![]() |
odpowiedz na 1 podstawowe pytanie:
ile milimetrow ma pixel na monitorze 17calowym w rozdzielczosci 650x480 a ile w 1920x1080. Jak to juz bedzie jasne to dalej z gorki. http://pl.wikipedia.org/wiki/Ppi |
|
|
![]()
Post
#3
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Musisz sobie zrobić jakąś mapę długości znaków w wybranej jednostce. Niech to będą np. pixele:
Oczywiście powyższe wartości to kompletny strzał, przykład. Następnie mając taką mapę możesz zastosować przelicznik na dowolną inną jednostkę miary (musisz wówczas określić stosunek pixel : inna jednostka). Do tego dochodzi jeszcze rozmiar i krój czcionki. Nie wiem czy jest jakaś zależność, ale jeśli wszystkie znaki skalują się proporcjonalnie przy zmianie rozmiaru/kroju czcionki (a możliwe, że tak jest) to możesz zastosować jakiś modyfikator tych wartości w zależności od aktualnych parametrów czcionki. Możesz również usprawnić powyższą mapę do grup znaków, co dla powyższego przykładu by było:
Jak to sobie zorganizujesz to już zależy od Ciebie. |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat Oczywiście powyższe wartości to kompletny strzał, przykład. Następnie mając taką mapę możesz zastosować przelicznik na dowolną inną jednostkę miary (musisz wówczas określić stosunek pixel : inna jednostka). Piksele, to piksele; w tym wypadku są miarą absolutną. Ale żeby przeliczyć na jednostki drukarskie, musisz znać wartość parametru DPI wyświetlacza i wg niego przeliczać. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 278 Pomógł: 35 Dołączył: 25.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
No właśnie o przypisaniu długości określonym znakom myślałem, ale miałem nadzieje że jest jakiś mniej pracochłonny sposób (IMG:style_emoticons/default/smile.gif)
Dzięki za odpowiedzi:) |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 706 Pomógł: 108 Dołączył: 12.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
A można wiedzieć do czego ci to potrzebne? Szerokość tekstu i tak będzie się różniła w zależności od takich czynników jak chociażby anti-aliasing. Jeżeli koniecznie musisz znać szerokość tekstu, to zastosuj bibliotekę GD i imageftbbox. Nie widzę sensu poznania szerokości tekstu w HTML-u.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 278 Pomógł: 35 Dołączył: 25.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
Chodzi o generowanie dokumentów z FPDF. Text wysyłany z formularza musi znaleźć się w określonym miejscu dokumentu pdf.
MultiCell w prawdzie świetnie się tu spisuje - łamie wiersze tam gdzie ma łamać, jednak nie da rady narzucić mu tego ile wierszy maksymalnie może stworzyć (bynajmniej ja nie wiem jak...) Wymyśliłem więc sobie że zrobię to określając maksymalną długość tekstu jako np 3 x szerokość pola tekstowego i wtedy powstaną maksymalnie 3 wiersze. Jeśli ktoś będzie chciał wpisać dłuższy tekst, to tekst taki nie zostanie przyjęty. Co do funkcji zwracającej długość tekstu to właśnie znalazłem w samej bibliotece fpdf : GetStringWidth (IMG:style_emoticons/default/smile.gif) Nie zaglądałem tam do manuala bo myślałem że znam wszystkie metody w nim zawarte, jednak się okazało że coś mi umknęło (IMG:style_emoticons/default/tongue.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 04:50 |