Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
Witam! Mam taki skrypt który wyciąga mi dane z pliku i wszystko ok! Ucina mi także za pomocą css wydruk gdy zobaczy podany znak w danej kolumnie. Wygląda to tak:
$obraz = "<center>"."<IMG src=obrazek.bmp alt=Zdjęcie>"."</center>";
$przed = array("^", "!", "~");
$po = array(" ", " ", $obraz);
$first=true;
$fd = fopen("plik.txt", "r");
while (!feof ($fd)) {
$BUFFER = fgets($fd, 152);
if ($BUFFER[41]=="~") {
if (! $first) echo "</div>";
$first=false;
echo "<div>". str_replace($przed , $po, $BUFFER);
} else if ($BUFFER) {
echo str_replace($przed , $po, $BUFFER);
} else
echo " ";
}
echo "</div>";
?>
jak widać zamienia tez niepotrzebne znaki na spacje oraz znaczek ~ który zamienia na obraz.
I właśnie - w pliku plik.txt w niektórych miejscach mam w kolumnie 41 wstawiony znaczek ~
w związku z czym za pomocą css ucina mi w tym miejscu wydruk. I jest ok. Wygląda to tak:
gość1
dane dane asdasdasdas
dsadasdasdasdasdasdsa
adasdasdasdasd
asrtyrtytrytrysadasd
adssadasdasdas
rtytrytryrt
dane dalsze itd
~
gość2
dane dane asdasdasdas
dsadasdasdasdasdasdsa
adasdatyrtyry
asdsadsadsadasd
adssadasdasdas
adads
dane dalsze itd
~
gość3
dane dane asdasdasdas
dsadasdasdasdasdasdsa
adasdasdasdasd
asdserwerwerwsdas
adads
dane dalsze itd
~
Czyli ładnie dane wyświetlają mi się po jednej stronie a nie jedno pod drugim ( a raczej powinno to ładnie wyglądać ).
Problem tkwi w tym że danych jest czasami bardzo dużo przypuszczalnie na 2 czasem 3 strony dla jednej osoby czasami część obrazka wychodzi do połowy na jednej stronie z reszta na drugiej ( oczywiście dzięki css są one i tak spoko oddzielone od siebie stronami)
Ale chodzi mi głównie o wydruk dwustronny. Czy da się to zrobić jakoś skryptem
żeby np - jeśli jest jedna strona dodawał jedną pustą ( żeby mozna było drukarką puścić to dwustronnie ) lub jeśli są dwie nic niedodawał lub jeśli są trzy dodawał jedną pustą -
czyli generalnie jeśli liczba stron np dla gość1 jest nieparzysta to żeby dodał pustą stronę. Bo o co chodzi- jeśli mam gość1 i pod nim jest gość2 to jeśli puszcze wydruk dwustronny to na jednej kartce będe miał z jednej strony dane gościa1 a z drugiej dane gościa2. I tak samo jesli gość1 bedzie miał dane na 3 strony to przy dwustronnym wydruku wyjdą dwie strony jedna z jednej i drugiej strony dane gościa1 i druga strona z jednej strony dane gościa1 a zdrugiej dane gościa2.( oczywiście liczba stron może wyjść nieokreślona- czyli 3,4,5,6 np)
Był bym bardzo wdzięczny za pomoc.
Jeszcze taka uwaga - wydruk jest ucinany dzięki znaczkowi ~ który zamieniany jest na obrazek - obrazek może mieć różną wysokość także ciężko by było włąściwie określić jak to wyjedzie jeśli znakiem kontrolnym miałby być ~. Dlatego jestem wstanie pod ~ wrzucić jeszcze jakiś inny znacznik np *.
Ostatnio edytowany przez debbie (2008-05-16 12:04:03)
Offline
takim podzialem aby zaczynac zawsze od strony nie parzystej musi zajac sie css (bo dopiero na etapie przegladarki i systemu drukowania jestesmy w stanie zidentyfikowac to ile stron wydruku zajmuje dana sekcja) ... pokaz zatem fragment css odpowiedzialny za podzial strony po obrazku / poszukaj tam opcji aby zaczynac od nieparzystej
Offline
No tak tylko samym podziałem stron zajmuje się opcja:
<style type="text/css"><!--
div { page-break-after: always;
}
no i poprostu div'em łamie sobie te strony
ale jak zrobić jakąś kontrole :
1 strona dodaje jedną pustą
2 strony nic nie dodaje
3 strony dodaje jedną pustą
itd.
Offline
Wymysliłem jeszcze coś takiego:
^
gość1
dane dane asdasdasdas
dsadasdasdasdasdasdsa
adasdasdasdasd
asrtyrtytrytrysadasd
adssadasdasdas
rtytrytryrt
dane dalsze itd
suma
~
^
gość2
dane dane asdasdasdas
dsadasdasdasdasdasdsa
adasdatyrtyry
asdsadsadsadasd
adssadasdasdas
adads
dane dalsze itd
suma
~
^
gość3
dane dane asdasdasdas
dsadasdasdasdasdasdsa
adasdasdasdasd
asdserwerwerwsdas
adads
dane dalsze itd
suma
~
jak widać dodałem znaczek ^
jest tam też stały tekst suma.
I teraz czy można by było zrobić jakiś licznik lini przypuszczalnie warunek gdzie:
jeżeli od ^ do ~ wyraz "suma" jest w przypuszczalnie 30 lini to dodaj stronę
a jeśli jest w 70 lini(czyli druga strona) to niedodawaj itd. np dla 5 różnych pozycji.
Ostatnio edytowany przez debbie (2008-05-19 09:16:02)
Offline
1. liczenie linii w php rozjedzie sie w zwiazku z roznymi ustawieniami czcionek drukarek itd w przegladarkach i nie jest dobrym pomyslem
2. jak mowilem to jest robota dla CSS a nie dla PHP czy jakiegokolwiek jezyka side-serwer
3. zainteresuj sie page-break-after: left; albo page-break-after: right;
Offline
Powiem szczerze że niewiem jakiego skryptu css użyć odnośnie skrytu php który napisałem powyżej
Za pomocą
<style type="text/css"><!--
div { page-break-after: always;
}
Mogę uciąć sobie wydruk ale niemoge mu ustawić liczby parzystych stron dla każdego bloczku.
Jak widzisz w skrypcie php jest ustawione kiedy ma ucinać wydruk - jeśli pojawi się znak ~
Ale w przypadku parzysych stron musiał by robić jakąś kontrole tak jak pisałem powyżej - jeśli
między ^ a ~ np w 30 lini pojawi się wyraz suma to dodaj strone ( albo użyje div i utnie mi jedną więcej )
Offline
Zobacz tutaj:
http://www.scrapingsystems.com/
pozdrawiam
romek
Offline
Strony: 1