Post
#1
|
|
|
Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław |
Opinie na temat artykułu "Generowanie plików RTF"
|
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 91 Pomógł: 0 Dołączył: 25.02.2004 Ostrzeżenie: (0%)
|
Hi!
Na początek małe sprostowanie do arykułu (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) i sorki za "tasiemca". Napisałem, że jedynie znaki { } oraz \ wymagają zamiany na tzw. sekwencje ucieczki. Teoretycznie zmianie powinny także podlegać wszystkie znaki o kodach ASCII powyżej 127. W praktyce nie stanowi to problemu bo po pierwsze - 99% tych znaków to hieroglify, których nie idzie wpisać do pola tekstowego w formularzu, po drugie - wpisanie np. tyldy (kod ASCII 152) nic nie knoci. I jeszcze jedna kwestia, która wyszła dopiero na dniach po instalacji nowego systemu i oprogramownia (m.in. Office 2003). W Office 2000 wpisanie w treści dokumentu RTF kodu php wraz z cudzysłowanimi (np. echo "bleble") wyglądało później (w czystym kodzie - po otwarciu np. w Notatniku) tak samo tzn. cudzysłów pozostawał cudzysłowem. Office 2003 przykłada się bardziej do roboty i zmienia cudzysłowy na sekwencje ucieczki. Taki kod może później szwankować, ponieważ nie będzie prawidłowo interpretowany. W związku z tym należy w momencie dodawania deklaracji nagłówka przejrzeć dla pewności wpisane funkcje - czy przypadkiem nie stało się tak jak wspomniałem. Nie powinno być to problemem mimo, że kod dokumentu RTF nie wygląda zbyt ciekawie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) - klikasz CRTL+F i znajdujesz dane funkcje. Zmienione cudzysłowy (podane w formie sekwencji ucieczki - może być \'84 \'93 \'94), czy inne niechciane zmiany przywracamy do stanu pierwotnego. Warto przy okazji wskazać na kolejną interesującą kwestię (powiązaną z powyższą). Otóż wprowadzane np. w Notaniku (zwykłym edytorze) cudzysłowy to tzw. cudzysłowy proste o kodzie ASCII 34 (<=127). Tak samo cudzysłów wprowadzany w formularzu na stronie internetowej będzie cudzysłowem prostym, a nie tym Word-owskim. Jednym słowem nie będzie sprawiał problemów. Niektórzy pomyślą skoro nie cudzysłowów to użyję apostrofów. Tutaj też jest problem - po zapisaniu do formatu RTF są one zamieniane na oznaczenie \rquote. Podsumowując konieczne jest sprawdzenie fukcji i ewentualne poprawienie ich. Być może nie jest to kwestia wersji Office'a, tylko jego ustawień, tym niemniej będziecie wiedzieli w razie kłopotów o co biega (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Niektórym może przyda się informacja, że poszczególne znaki przyporządkowane kodom ASCII zarówno powyżej, jak i poniżej 127 możemy uzyskać konwertując dzięsiętną wartość kodu ASCII na liczbę szesnastkową (Hex, hexadecimal) i zapisując ją w formacie \'hh gdzie hh to wspomniana wartość Hex. W bardzo prosty sposób zrobimy to używając standardowego kalkulatora Windows-owego (wcześniej należy tylko przełączyć wygląd na profesjonalny - wpisujemy kod ASCII i klikamy na radiobutton-a Hex). I w końcu odpowiem na Wasze maile (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Mail makay-a: Sprawdź to co napisałem o zmianie cudzysłowów i apostrofów, sprawdź czy po otwarciu dokumentu np. w Notatniku wpisany przez Ciebie kod php nie został zmieniony podczas zapisu do RTF-a w inny sposób. Na 99% to wspomniany problem z Wordem. Może raczej nie problem tylko "kwestia techniczna" (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Mail migacz-a: Sprawa jest do wykonania, ale jest pewne ale (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) - czytaj pkt. 1 Analizując zaprezentowane przeze mnie rozwiązanie widać, że kod dokumentu RTF znajduje się poza kodem php. Nie można dowolnie obrabiać kodu dokumentu RTF, "zapętlać" jego fragmentów np. tabel, a następnie "wyprintować" go. Można natomiast wywołać funkcją echo fragment dokumentu RTF, który wstawiony "w środku" zostanie prawidłowo zinterpretowany i wyświetlony. Może jaśniej zobrazuje to przykład z wykonaniem dokumentu, o który Ci chodzi - w którym jakieś dane pobierane są z bazy danych i wstawiane są do automatycznie generowanej tabeli. A więc po kolei: 1) Po pierwsze będziesz musiał zajrzeć do specyfikacji RTF (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) w celu przyjrzenia się definiowaniu tabel 2) Otwórz czysty dokument, wpisz w nim np. xxx i zapisz jako dokument RTF 3) Otwieramy zapisany dokument RTF np. w Notatniku. Na początku wprowadzamy (zgodnie z informacjami z artykułu) deklarację nagłówka, a wraz z nim możemy wpisać funkcje odpowiedzialne za połączenie z bazą danych np.:
następnie odnajdujemy (CTRL+F czy F3) wcześniej wpisany ciąg znaków (u nas było to xxx - sprawdź tylko, żeby nie był to ciąg zaraz bo definicji \title bowiem w tym miejscu zapisywany jest tytuł dokumentu - kolejne nasze xxx powinno być we właściwym miejscu). Ciąg tych znaków zmieniamy na funkcję php wyświetlającą poszczególne dane z bazy. Efekt zapytania zostaje "wkomponowany" w zdefiniowaną w kodzie RTF tabelę, którą wywołujemy poprzez użycie funkcji echo. Przykład:
4) W wyniku wywołania w oknie przeglądarki tak "spreparowanego" dokumentu RTF ukaże nam się zwykły dokument, w którym będzie widniała jednokolumnowa tabela, a zawartość poszczególnych wierszy będzie stanowić zawartość pola 'opis' z bazy danych. Teraz tylko musisz poczytać w specyfikacji RTF o tabelach, tak żeby stworzyć tabelę jaką potrzebujesz. Możesz także pobawić się w ten sposób, iż stworzysz w Wordzie tabelę, zapiszesz dokument w formacie RTF, a następnie przeglądając go w Notatniku zechcesz "wyłapać" definicję owej tabeli (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Co do wyświetlania pierwszego wiersza na każdej ze stron to myślę, że jest to zadanie z serii "mission impossible", ale mogę się mylić - pokombinuj, mam nadzieję, że Cię nakierowałem. Przyjrzę się jeszcze temu i w razie jak coś wymyślę to się odezwę. Hmm, i tak wyszedł tekst dłuższy od artykułu (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Mam nadzieję, że pomogłem. Pozdrawiam serdecznie i życzę miłej zabawy. Ten post edytował Vir 5.07.2004, 16:51:24 |
|
|
|
scanner Generowanie plików RTF [Vir] 6.04.2004, 08:30:32
migacz pętla w tabeli 15.04.2004, 13:46:52
makay Mama problemy z tworzeniem tego rtf wyskakuje mi ... 19.04.2004, 12:29:54
Vir Sorki, że tak późno się odzywam i bez gotowych odp... 20.04.2004, 17:17:45
migacz dzięki za odpowiedź. pocztalem troche o rtfie i po... 27.04.2004, 11:11:09
pieto Witam, Może ktoś wymyśli sposób żeby rtfa można by... 5.05.2004, 15:22:42
Vir Nie ma możliwości zapisania takiego pliku we wskaz... 5.05.2004, 17:11:26
pieto Ok, dzięki, to chyba się nie przyda 5.05.2004, 17:45:04
Vir W związku z tym, że docierały do mnie w ostatnim c... 1.06.2004, 22:20:34
oksi Generowanie plików RTF [Vir] 4.06.2004, 00:31:54
Vir Cytatzapisuje po wszytkich modyfikacjach ten plik ... 4.06.2004, 14:17:32
oksi Jak sformatowac wyniki zapytania z bazy
w postaci ... 5.06.2004, 18:24:28
Vir Ciekawe pytanie
Przez najbliższe 2 tygodnie mogę ... 8.06.2004, 17:53:11
oksi dzieki za wskazowki, sprobuje cos pobrobowac.
poz... 9.06.2004, 18:31:32
Kiler mam pytanie o konfiguracje serwera przy tych plika... 29.06.2004, 11:30:46
Vir AddType jest to dyrektywa w Apache'u za pośred... 5.07.2004, 16:20:59
samolot Witam Wwszystkich . Jestem u Was nowy.
Znalazłem ... 9.04.2007, 19:08:14
phpion.com http://wortal.php.pl/phppl/wortal/artykuly...anie_... 10.04.2007, 22:07:20
wert1 pytanie nie do tego tematu :
jak Vir zrobił dwa po... 20.04.2007, 14:58:26
pschemo Witam,
bardzo zaciekawił mnie ten artykuł =]
Zrob... 7.05.2007, 11:36:25 ![]() ![]() |
|
Aktualny czas: 29.12.2025 - 17:11 |