ОсновноеRadiotalkПользовательское
Программирование
6   •   Посмотреть все темы

Автоматическая генерация многостраничных документов

 

284
arteshuk @arteshuk
Яндекс замучен до смерти.....эффекта ноль 🙁

задача: имеем многостраничный документ (.doc ну или .txt если второе проще)

Необходимо вывести этот документ разбивая на страницы по N строк....ну и постраничную навигацию...

Может есть у кого какие наработки, или покажите где почитать на эту тему....

Спасибо!

6600
Александр @admiral
<?php
//путь до файла
$in = 'file.txt';
//имя нового файла
$out_name = 'newfile';
//расширение нового файла
$out_rassh = 'txt';
//через сколько строк разбивать
$str = 1000;
//начальное значение счетчика для подсчета количества получившихся файлов
$count_out = 0;

if(file_exists($in)) $content = file($in); else exit('Файл не найден '.$in);
$k=0;
$add = '';
for($i=0, $count=count($content); $i < $count; $i++){
if($i == $str * ($k + 1) || $i==$count-1){
if($i==$count-1) $add=$add.$content[$i];
$fp = fopen($out_name.$k.'.'.$out_rassh, 'w');
fputs($fp, $add);
fclose($fp);
$add='';
$k++;
}
$add=$add.$content[$i];
}
echo 'Получилось '.$k.' файлов';
?>

Файл разбивается по названиям newfileХ.txt, где Х число по порядку, кто добавит навигацию?)
Trilby, ошибку не забудь исправить)

284
arteshuk @arteshuk
Файл разбивается по названиям newfileХ.txt, где Х число по порядку, кто добавит навигацию?)

да, добавьте кто-нить навигацию! 😀

8497
Степан @Trilby
admiral пишет:

Файл разбивается по названиям newfileХ.txt, где Х число по порядку, кто добавит навигацию?)
Trilby, ошибку не забудь исправить)

<?php
//путь до файла
$in = 'file.txt';
//имя нового файла
$out_name = 'newfile';
//расширение нового файла
$out_rassh = 'txt';
//через сколько строк разбивать
$str = 10;
//начальное значение счетчика для подсчета количества получившихся файлов
$count_out = 0;

if(file_exists($in)) $content = file($in); else exit('Файл не найден '.$in);
$k=0;
$add = '';
for($i=0, $count=count($content); $i < $count; $i++){
if($i == $str * ($k + 1) || $i==$count-1){
if($i==$count-1) $add=$add.$content[$i];
$fp = fopen($out_name.$k.'.'.$out_rassh, 'w');
fputs($fp, $add);
fclose($fp);
$add='';
$k++;
}
$add=$add.$content[$i];
}
echo '<p>Получилось '.$k.' файлов</p>';
echo '<p>Список файлов:</p>';
for($i=0, $k; $i <$k; $i++){
echo "<a href=/".$out_name.$i.".".$out_rassh.">#".$i."</a> ";
}
?>

Чётакатата 😀
Свой говнокод удалил, т.к. там даже не то было...

Отредактировано Trilby - 24.01.2011
6600
Александр @admiral
Катата работает ) Но есть минус, усложним задачу)) Минус в том что когда большой файл разбиваешь, то получается много страниц, тут навигацию лучше делать <<назад 1 2 3 ... далее>> что то вроде такой)

284
arteshuk @arteshuk
клева! А какие еще форматы файлов можно так разбивать? .doc можно?

и еще, как выводить кусок текста (файла) а под ним навигацию?

8497
Степан @Trilby
Учи английский от ********** до **********. Вернусь - проверю 😁

284
arteshuk @arteshuk
А вот такое вопрос:
читаем файл. находим в нем строку содержания (например) 12345

как организовать перенос текста на следующую страницу именно по этой строке?

спасибо!

Отредактировано arteshuk - 01.02.2011
284
arteshuk @arteshuk
эх....все заняты наверное...так и помру дураком 🙁

7094
Dim @Render
Использовать условия и разбираться с регулярными выражениями, возможно есть и другие способы.
Подсказать не смогу, сам ещё с регулярками на "вы".

284
arteshuk @arteshuk
Render пишет:

Использовать условия и разбираться с регулярными выражениями, возможно есть и другие способы.
Подсказать не смогу, сам ещё с регулярками на "вы".

я вообще перехожу на ВЫ после <?php....

посню чего надо:


имеем файл file.txt

читаем файл (в массив или построчно)
находим в файле символы 1234567
начиная с этих символов пишем новый файл (как в предложенном выше варианте)
читаем дальше, находим, пишем еще один....

и т.д.

ну плюс постраничная навигация.....

у меня не получается ну нивкакую 🙁 я чайник 🙁

284
arteshuk @arteshuk
О! нашел!!!!!!!!
<?php
/*
* Дата создания 18.07.2006 1:33:37
* package_name
* @author Alexandr Beshkenadze aka akira
* (c) akira 2006
*
*/
function textpart($text, $count=100) {
$number = @ $_GET['number'];
#
if($count > 0) {
$text = wordwrap($text,$count, "[page]");
}
$str = explode("[page]", $text);
// Выясняем сколько страниц
$count = count($str);
//Выводим страницу
empty ($number) ? $number = 0 : $number < 0 ? $number = 0 : "";
echo $str[($number)];
if ($number != ($count -1) and $number != 0) {
echo " [<a href='?number=" . ($number +1) . "'>...</a>]";
}
echo "<br/>";
echo " <a href='?number=0'>Вступление</a>";
echo "<br/>";
// Если текущая страница первая, то выводим продолжить
if ($number == 0 and count($str) > 1) {
echo "<br/><a href='?number=" . ($number +1) . "'>[Читать дальше...]</a> <br/>";
} else {
// Проверяем текущая ли это страница
for ($i = 1; $i < $count; $i++) {
if ($i == $number) {
if ($i == ($count -1) and $count > 2) {
echo " <b>[$i]</b>";
echo " <a href='?number=" . ($count - $i) . "'> в начало</a>";
}
elseif ($i == ($count - ($count -1)) and $count > 2) {
echo " <a href='?number=" . ($count -1) . "'>в конец </a>";
echo " <b>[$i]</b>";

}
elseif ($i == $number) {
echo " <b>[$i]</b>";
}
} else {
echo " <a href='?number=$i'>[$i]</a>";

}
}
}
}
$str = file_get_contents("text.txt");
textpart($str,0);
?>

**********

как раз то что искал!

Но есть одна беда: помогите пожалуйста!

как преобразовать этот код, чтоб работало без
function textpart($text, $count=100)
и
textpart($str,0);

т.е. чтоб был просто php скрипт, без ЭТОГО?

спасибо!!!!

284
arteshuk @arteshuk
Ну помогите пожалуйста!