![]() |
![]() ![]() |
![]() |
![]()
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: 55 Pomógł: 0 Dołączył: 15.04.2003 Skąd: Tczew Ostrzeżenie: (10%) ![]() ![]() |
Witam
Artykuł bardzo ciekawy. Pomógł mi rozwiązać parę problemów, ale mam jeszcze jeden, dla mnie b.istotny. Otóż pobieram z bazy dane i muszę je wstawić do rtf w postaci tabeli |Lp.|Nazwisko|Imie| |1 |Kowalski |Jan | |2 |Chrzna |Jan | itd. Oczywiście za każdym razem liczba osób jest inna. Gdzie wstawić pętlę by generowala nowe wiersze tabeli automatycznie, oraz by 1 wiersz tabeli był widoczny na każdej nowej stronie. Z góry dzięki za jakąkolwiek pomoc |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 0 Dołączył: 3.11.2003 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Mama problemy z tworzeniem tego rtf wyskakuje mi [php:1:3ba0b4254e]Warning: Unexpected character in input: '' (ASCII=92) state=1 in c:program filesapache groupapachehtdocsadminm.rtf on line 1
Warning: Unexpected character in input: '' (ASCII=92) state=1 in c:program filesapache groupapachehtdocsadminm.rtf on line 1 Parse error: parse error, unexpected T_STRING in c:program filesapache groupapachehtdocsadminm.rtf on line 1 [/php:1:3ba0b4254e] Co robie nie tak ![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 91 Pomógł: 0 Dołączył: 25.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
Sorki, że tak późno się odzywam i bez gotowych odpowiedzi, ale poczekajcie chwilę na nie - może jeszcze z 1 dzień bo komp łącznie z siecią tak mi szwankuje, że cudem piszę tego posta (o ile nie wywali mnie zaraz
![]() Ps. Problemy są do rozwiązania ![]() |
|
|
![]()
Post
#5
|
|
![]() 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 ![]() 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 ![]() 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 ![]() 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 ![]() 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" ![]() Mail migacz-a: Sprawa jest do wykonania, ale jest pewne ale ![]() 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 ![]() 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 ![]() 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 ![]() Mam nadzieję, że pomogłem. Pozdrawiam serdecznie i życzę miłej zabawy. Ten post edytował Vir 5.07.2004, 16:51:24 -------------------- Polak wszystko może, a jak nie może to stara się jak może.
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 15.04.2003 Skąd: Tczew Ostrzeżenie: (10%) ![]() ![]() |
dzięki za odpowiedź. pocztalem troche o rtfie i pomału dochodzę do tego co chce osiągnąc. Dzięki
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 227 Pomógł: 1 Dołączył: 12.05.2002 Skąd: gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Witam, Może ktoś wymyśli sposób żeby rtfa można było zapisać po podaniu ścieżki i nazwy ?
z góry dzięki za każdą pomoc i pozdrawiam -------------------- Materiały i Wypracowania znajdziesz na zgapa.pl i
Encyklopedii Zgapedia Jedyny przedawkowany portal motoryzacyjny to autoholik.pl |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 91 Pomógł: 0 Dołączył: 25.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
Nie ma możliwości zapisania takiego pliku we wskazane miejsce na dysku usera (bo zakładam, że chodzi Ci o takie rozwiązanie), ponieważ php to język server-side. Możesz zrobić co najwyżej tak:
za
dodaj:
Pozdrawiam, Vir Ten post edytował Vir 5.07.2004, 16:28:24 -------------------- Polak wszystko może, a jak nie może to stara się jak może.
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 227 Pomógł: 1 Dołączył: 12.05.2002 Skąd: gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Ok, dzięki, to chyba się nie przyda
-------------------- Materiały i Wypracowania znajdziesz na zgapa.pl i
Encyklopedii Zgapedia Jedyny przedawkowany portal motoryzacyjny to autoholik.pl |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 91 Pomógł: 0 Dołączył: 25.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
W związku z tym, że docierały do mnie w ostatnim czasie pytania (na PW) dotyczące różnych zagadnień z zakresu generowania dokumentów RTF postanowiłem niniejszym przedstawić publicznie
![]() Przy okazji zwracam się z prośbą o nie pisanie w przyszłości PW z zapytaniem dotyczącym generowania dokumentu RTF, a umieszczanie go na forum, w tym wątku, tak aby inni mogli później skorzystać z udzielonej odpowiedzi. Pierwsze zapytanie dotyczło formatowania tekstu. Odpowiedź: W celu sformatowania tekstu w generowanym dokumencie RTF należy zastosować polecenia formatujące (do znalezienia w specyfikacji RTF). Listę podstawowych poleceń formatujących przedstawiam poniżej: \i kursywa \b pogrubienie \ul podkreślenie \super indeks górny \sub indeks dolny \strike przekreślenie. Kolejną poruszaną kwestią było wstawienie obrazka do dokumentu RTF. Przykład wstawienia obrazka .gif to wywołanie funkcją echo wartości hex danego pliku graficznego poprzedzonej funkcją RTF deklarującą wstawiany typ danych: Wstawiona wyżej wartość hex jest przypadkowa. Podany przykład ma za zadanie wyświetlenie pliku .gif. Więcej szczegółow w specyfikacji. Dodam tylko, że takie wstawianie obrazków ma sens jedynie wówczas, gdy objętość pliku graficznego jest niewielka. W przypadku wstawienia obrazka .jpg o objętości 12KB objętość całego pliku RTF rośnie do ok. 400 KB... Jeżeli ktoś będzie potrzebował sposobu na konwersję pliku graficznego na wartość hex to poniżej zamieszczam źródło prostego pliku, którego wykonuje taką konwersję. Jego działanie sprowadza się do użycia funkcji bin2hex().
Ten post edytował Vir 5.07.2004, 16:26:49 -------------------- Polak wszystko może, a jak nie może to stara się jak może.
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 3.06.2004 Ostrzeżenie: (0%) ![]() ![]() |
mam problem,
wykonuje wszystko tak jak jest podane w przykladzie podanym przez Vir'a, odnosnie tabeli. i nic. zapisuje po wszytkich modyfikacjach ten plik jako plik.php i w przegladarce otwiera mi sie dodatkowe okno z komunikatem ze rozpoczeto pobieranie pliku nieznanego typu MIME. Uzywam Mozilli PL 1.6. w oknie tym mam do dyspozycji kilka opcji: otworz za pomoca domyslenej aplikacji... kiedy otwieram ten plik w domyslnej aplikacji, a w tym przypadku jest to edytor edHTML, widze tylko kod z wynikiem zapytania w odpowiednim miejscu. Jesli wybiore opcje zapisz, i zapisze ten plik z rozszerzeniem .rtf , uzyskuje poprawny dokument rtf z tabela Czy istnieje mozliwosc, aby od razu zostal wygenerowany dokument rtf, bez koniecznosci dodawania rozszerzenia .rtf i zapisu na dysku? Przepraszam, za tak dlugi tekst. Prosze o wskazowke. |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 91 Pomógł: 0 Dołączył: 25.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
Cytat zapisuje po wszytkich modyfikacjach ten plik jako plik.php
W rozwiązaniu tym chodzi o to, że pracujemy bezpośrednio na dokumencie RTF i zapisujemy dany plik z rozszerzeniem .rtf, a nie .php. Dzięki odpowiedniej konfiguracji serwera (o czym mowa w artykule) taki plik jest odpowiednio interpretowany i wyświetlany. Mam nadzieję, że wyjaśniłem co nieco ![]() Pozdrawiam -------------------- Polak wszystko może, a jak nie może to stara się jak może.
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 3.06.2004 Ostrzeżenie: (0%) ![]() ![]() |
Jak sformatowac wyniki zapytania z bazy
w postaci listy: 1. a) ![]() c) .... w rtf? prosze o wskazowki. W dokumentacji jest strasznie duzo opcji i nie wiem od czego zaczac, i ktore z nich sa mi potrzebne. pozdrawiam |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 91 Pomógł: 0 Dołączył: 25.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
Ciekawe pytanie
![]() Przez najbliższe 2 tygodnie mogę nie mieć czasu przyjrzeć się temu bliżej, ale możesz zacząć od poczytania o "List table" w specyfikacji RTF. Być może znajdziesz tam coś ciekawego. Ostatecznie można to zrobić w samym php - jeżeli odczytujesz dane z bazy w pętli to również w pętli możesz wypisać kolejne cyfry 1,2... do tego dodać kropkę i znak tabulacji, czy jakiś podwójny odstęp... Można pokombinować ![]() Swoją drogą podglądając kod dokumentu RTF, który zawiera wypunktowanie widać, że zapisane są poszczególne cyfry i litery wypunktowania (wniosek - może nie da rady zrobić tego "automatem"). -------------------- Polak wszystko może, a jak nie może to stara się jak może.
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 3.06.2004 Ostrzeżenie: (0%) ![]() ![]() |
dzieki za wskazowki, sprobuje cos pobrobowac.
pozdrawiam:) |
|
|
![]() ![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 22.01.2003 Skąd: www Ostrzeżenie: (0%) ![]() ![]() |
mam pytanie o konfiguracje serwera przy tych plikach rtf :
IIS nie posiada ani pliku .htaccess ani httpd.conf to są pliki z Apache niestety z opisu nie wynika jak się te pliki rtf tworzy ani po co taka a nie inna konfiguracja więc prosze o podpowiedz jak to robić na IIS. Ten post edytował Kiler 29.06.2004, 11:31:59 -------------------- poczatkujacy
|
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 91 Pomógł: 0 Dołączył: 25.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
AddType jest to dyrektywa w Apache'u za pośrednictwem której dodaje się nowe typy MIME o danym rozszerzeniu.
AddType application/x-httpd-php .rtf - AddType - dyrektywa, application/x-httpd-php - typ MIME, .rtf - rozszerzenie. Dzięki temu dokumenty RTF zostaną skojarzone ze skryptami php. Z tego co widziałema na php.net to jest opisane kojarzenie plików o danym rozszerzeniu ze skryptami php (.php) i wydaje mi się, że w tym przypadku tak samo jak rozszerzenie .php należy dodać rozszerzenie .rtf. A w zasadzie wrzucę rozwiązanie po angielsku (nie moje): Cytat In the management console, under the properties for the virtual (or default) web in the home directory, go to home directory | application settings | configuration. Click on "Add" and enter the path to the php.exe as it is set for .php files. (For me this was C:\php\php.exe "%s" "%s"). Type .rtf as the extension and press OK. W razie kłopotów pisz na grupie "Serwery WWW" > "IIS", tam powinni wiedzieć ![]() Jeżeli chodzi o tworzenie dokumentów RTF to tworzy je się "zwyczajnie" ![]() Ten post edytował Vir 5.07.2004, 16:21:59 -------------------- Polak wszystko może, a jak nie może to stara się jak może.
|
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 9.04.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam Wwszystkich . Jestem u Was nowy.
Znalazłem to hasło "Generowanie plików RTF" w Gogle i tak tu trafiłem Zainteresowany jestem specyfikacją plików RTF. Nie mogę jednak otworzyć odnosnika "Generowanie plików RTF". Mieli sie i mieli ,ale się nie otwiera. Czy jest inny sposób do dotarcia do niego? |
|
|
![]()
Post
#19
|
|
![]() Grupa: Moderatorzy Postów: 6 070 Pomógł: 860 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
|
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 175 Pomógł: 2 Dołączył: 22.03.2007 Skąd: localhost Ostrzeżenie: (0%) ![]() ![]() |
pytanie nie do tego tematu :
jak Vir zrobił dwa posty które się nie połaczyły ![]() -------------------- "Homo sum, humani nihil a me alienum puto."
"Necessitas ultimum et maximum telum est." "Ventem seminabunt et turbinem metent." "Gallia est omnis divisa in partes tres..." |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 26.04.2024 - 15:02 |