Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Długość tekstu, ... np w milimetrach
gargamel
post
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)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
maly_swd
post
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
Go to the top of the page
+Quote Post
phpion
post
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:
  1. $map = array(
  2. 'a' => 5,
  3. 'b' => 5,
  4. //...
  5. 'm' => 8
  6. );

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:
  1. $map = array(
  2. 5 => array('a', 'b'),
  3. 8 => array('m')
  4. );

Jak to sobie zorganizujesz to już zależy od Ciebie.
Go to the top of the page
+Quote Post
erix
post
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ć.
Go to the top of the page
+Quote Post
gargamel
post
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:)
Go to the top of the page
+Quote Post
croc
post
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.
Go to the top of the page
+Quote Post
gargamel
post
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)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 04:50