Biblioteka 2.0 on Facebook
Biblioteka 2.0 Strona Główna

Biblioteka 2.0
Forum społeczności czytelników i bibliotekarzy cyfrowych

FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy  StatystykiStatystyki
RejestracjaRejestracja  ZalogujZaloguj  AlbumAlbum  DownloadDownload

Poprzedni temat «» Następny temat
Zapisywanie wielu "niezależnych" stron documentu d
Autor Wiadomość
fair2003 

Dołączył: 22 Cze 2011
Posty: 5
Poziom: 1
HP: 0/18
 0%
MP: 8/8
 100%
EXP: 4/9
 44%
Wysłany: 2011-06-22, 10:54   Zapisywanie wielu "niezależnych" stron documentu d

Witam,
Daną stronę z wielostronicowego dokumentu Djvu zapisać jest łatwo. Umożliwia to praktycznie każda przeglądarka. Jak natomiast zapisać wszystkie strony dokumentu naraz - jako osobne pliki djvu? Jest do tego jakiś program uruchamiany z linii poleceń? Zaznaczam, że nie chodzi mi o zapisanie dokumentu w formacie indirect, w którym występują pliki djbz. Ja potrzebuję, aby wszystkie zapisane strony mogły funkcjonować całkowicie niezależnie od siebie, tak jak po wykonaniu polecenia "Zapis stronę jako...".
Pozdrawiam,
 
     
fair2003 

Dołączył: 22 Cze 2011
Posty: 5
Poziom: 1
HP: 0/18
 0%
MP: 8/8
 100%
EXP: 4/9
 44%
Wysłany: 2011-06-22, 18:34   djvused

Program djvused z pakietu DjVuLibre robi to co chciałem:

djvused 1.djvu -e "select 1; save-page-with 0001.djvu"
djvused 1.djvu -e "select 2; save-page-with 0002.djvu"
...

Trochę miałem z tym problemu ponieważ instrukcja użycia programu jest błędna.

A może ktoś zrobi mi prosty skrypt, żeby nie używać pliku bat z wieloma linijkami ;-) ?
 
     
Grzegorz B. 
Grzesiek

Wiek: 58
Dołączył: 23 Lis 2007
Posty: 44
Skąd: Zabrze
Poziom: 5
HP: 0/81
 0%
MP: 38/38
 100%
EXP: 6/13
 46%
Wysłany: 2011-06-24, 10:16   

fair2003 napisał/a:
Witam,
...Jak natomiast zapisać wszystkie strony dokumentu naraz - jako osobne pliki djvu? Jest do tego jakiś program uruchamiany z linii poleceń? Zaznaczam, że nie chodzi mi o zapisanie dokumentu w formacie indirect, w którym występują pliki djbz.

Do takiej operacji nadaje się DjVuSED.
Tak nawiasem - w pliku indirect słowniki kształtów wspólnych .djbz mogą, ale nie muszą być.
Aby "rozebrać" publikację na strony, które są samodzielnymi plikami jednostronicowymi trzeba napisać pliczek wsadowy. To, czy należy "rozbierać" publikację zapisaną sposobem scalonym (bundled) czy też rozdzielonym (indirect) nie ma żadnego znaczenia. Może z tą różnicą, że plik bundled trzeba przed "rozebraniem" zapisać sposobem rozdzielonym (zatem jedna operacja do wykonania, chyba nic strasznego). Zakładamy, że posiadamy publikację indirect.

fair2003 napisał/a:
A może ktoś zrobi mi prosty skrypt, żeby nie używać pliku bat z wieloma linijkami

No, ... zrobiłem skrypcik. :->
Tylko nie rozumiem co jest złego w pliku wsadowym z dużą ilością linijek i dobrego w pliku z małą ilością ?
Jeżeli użytkownik pliku - załóżmy - w pierwszych 5-10 linijkach wpisze sobie folderek i jakieś parametry TAK/NIE, to co za różnica ile linijek jest niżej ?
Poniższy fragment dotyczy załączonego do odpowiedzi pliku w całości. Zmieniłem mu rozszerzenie, bo serwery nie lubią rozszerzenia .Bat (trzeba je przywrócić).

Ten plik uwzględnia także to, że publikacja DjVu może obok stron zawierać jeszcze adnotacje i/lub metadane (np. drukowany nagłowek). Czasami te adnotacje mogą się przydać, czasami są zbyteczne.
Jeżeli adnotacje (w postaci pliku tekstowego) nie będą potrzebne, trzeba wiersz :
Kod:
Set ExportAnnots=TAK

zmienić na
Kod:
Set ExportAnnots=NIE

Jeżeli w samodzielnych stronach powinno się zachować adnotacje, które były w stronach "rozbieranej" publikacji, trzeba wiersz :
Kod:
Set DelAfterAnno=TAK

zmienić na
Kod:
Set DelAfterAnno=NIE

Co dalej?
Trzeba sobie określić folderki :
1. Gdzie jest publikacja
2. Gdzie powinny powstać pliki samodzielne
3. Gdzie ew. zachowane będą wyekstrahowane adnotacje
odpowiadają za to wiersze pliku :
Kod:
Set SourcePath=D:\Remi\test\Moja publikacja\
Set TargetPath=D:\Remi\test\Moje_pliki\
Set ExportedAnno=D:\Remi\test\Moje adnotacje\

Napisałem to tak, że folderki kończą się backslash "\", nie są objęte cudzysłowami, a spacja nie jest dopuszczalna w folderze "2.", bo ... bo DjVuSED jest upierdliwy pod tym wzlędem. Folderki "2." i "3." nie muszą istnieć na dysku. Plik utworzy je sobie automatycznie.
I dochodzimy do najważniejszego. Publikacja indirect posiada plik indeksowy np. directory.djvu oraz (przynajmniej) pliki stron np. p0001.djvu, p0002.djvu, ... lub 0100.djvu, 0200.djvu ...
Aby zamysł się powiódł, należy jeszcze określić maskę nazw stron, tak by procedura "rozbierająca" nie nadziała się na plik directory.djvu, bo będzie kłopot.
W tym celu są 2 wiersze :
Kod:
    Set WzorzecNazwy1=0*.djv*
    Set WzorzecNazwy2=1*.djv*
 

Pomocnym powinien być poniższy screenshot, który pokazuje, że strony "rozbieranej" publikacji zaczynają się zerem lub jedynką (i właśnie takie pliki chcemy rozebrać), a plik indeksowy rozpoczyna się od litery "d", więc do maski nie pasuje i kłopotu nie będzie.



Zatem, jakie kto ma nazwy pliów kolejnych stron, tak sobie ustawia zmienne "WzorzecNazwyX". Gdy drugi wzorzec jest zbyteczny, można przypisać mu cokolwiek np. *abcd.djvu
Ponieważ w różnych lokalizacjach różni użytkownicy posiadają bibliotekę DjVu Libre, trzeba to równiez określić jak pokazano poniżej:

Kod:
    Set DLibrePath="C:\Apps\DjVuLibre\"
    Set DjVuSED="djvused.exe"

Ponieważ 80% kłopotów ze skryptami to spacja w nazwie ścieżek lub pliku, odpuściłem sobie systemowy folder "aplikacji wszelakich, zapomnianych i używanych" Program Files i instaluję biblioteki w folderze "Apps". Wszystko stało się prostsze.

Od linijki ":: Kod pliku wsadowego _______________________________________"
nie należy się już przejmować treścią pliku. Można go uruchamiać dowolną ilość razy (oczywiście stosownie wpierw ustawiając parametry TAK/NIE oraz wpisując folderki). I już.

Plik wsadowy uruchamia się z dowolnego foldera tego samego dysku, na którym zapisana jest "rozbierana" publikacja!
A to jego początek, za treść którego odpowiada "Uruchamiacz pliku". Powodzenia

Kod:

::
:: Zapis w postaci plików jednostronicowych foldera z publikacją DjVu,
::
  Echo Off
  Cls

    Set DLibrePath="C:\Apps\DjVuLibre\"
    Set DjVuSED="djvused.exe"
    Set WzorzecNazwy1=0*.djv*
    Set WzorzecNazwy2=1*.djv*

    Set SourcePath=D:\Remi\test\Moja publikacja\
    Set TargetPath=D:\Remi\test\Moje_pliki\
    Set ExportedAnno=D:\Remi\test\Moje adnotacje\

    :: Pliki bez spacji w nazwie : TempFile, PlikIndeksowy
    ::
    Set PlikIndeksowy=directory.djvu
    Set TempFile=Skasuj.Txt
    Set RprtFile=Raport Wykonania.Txt

    :: Wedle życzenia
    ::
    Set ExportAnnots=TAK
    Set DelAfterAnno=TAK
::
::  Kod pliku wsadowego ________________________________________________
::

W wynikowym folderze obok stron pojawi się plik raportu. Powinien posiadać mniej więcej taką zawartość:

:
: Utworzono listę stron publikacji
: Adnotacje wyekstrahowano do foldera: D:\Remi\test\Moje adnotacje\
: Publikację pomyślnie zapisano jako kolekcja plików jednostronicowych
: Usuwanie adnotacji z plików jednostronicowych
:
: Wszystkie operacje zostały wykonane.
_________________
"Wszystko jest trudne do czasu, gdy stanie się proste"
 
     
Grzegorz B. 
Grzesiek

Wiek: 58
Dołączył: 23 Lis 2007
Posty: 44
Skąd: Zabrze
Poziom: 5
HP: 0/81
 0%
MP: 38/38
 100%
EXP: 6/13
 46%
Wysłany: 2011-06-24, 10:25   

Ech ten pośpiech. Umieściłem pliczek pod adresem
http://www.djvu.com.pl/in..._SinglePage.zip
Będzie prościej
_________________
"Wszystko jest trudne do czasu, gdy stanie się proste"
 
     
sk 
sk

Dołączył: 19 Lut 2007
Posty: 292
Skąd: KPBC, Toruń
Poziom: 15
HP: 0/488
 0%
MP: 233/233
 100%
EXP: 35/35
 100%
Wysłany: 2011-06-24, 11:08   

Oneliner dla kompatybilnych inaczej, gdyby ktoś potrzebował:
Kod:
djvm -l /sciezka/plik.djvu | awk -F\# '/PAGE/{print $2}' | while read nr fn; do pfx=`printf %03d $nr` ; echo "$pfx.$fn" ; djvused /sciezka/plik.djvu -e "select $nr ; save-page-with $pfx.$fn" ; done

Zapisuje kolejne strony jako 3cyfrowyprefix.nazwastrony.djvu, informuje co właśnie robi, nie ma znaczenia, czy dokument jest "bundled" czy "indirect".
 
     
fair2003 

Dołączył: 22 Cze 2011
Posty: 5
Poziom: 1
HP: 0/18
 0%
MP: 8/8
 100%
EXP: 4/9
 44%
Wysłany: 2011-06-24, 21:19   

Grzegorz B. napisał/a:
Do takiej operacji nadaje się DjVuSED.
Tak nawiasem - w pliku indirect słowniki kształtów wspólnych .djbz mogą, ale nie muszą być.
Aby "rozebrać" publikację na strony, które są samodzielnymi plikami jednostronicowymi trzeba napisać pliczek wsadowy. To, czy należy "rozbierać" publikację zapisaną sposobem scalonym (bundled) czy też rozdzielonym (indirect) nie ma żadnego znaczenia. Może z tą różnicą, że plik bundled trzeba przed "rozebraniem" zapisać sposobem rozdzielonym (zatem jedna operacja do wykonania, chyba nic strasznego). Zakładamy, że posiadamy publikację indirect.

Właśnie użyłem djvused.
W DjVu w formie indirect jeśli pliki .djbz istnieją, to muszą koniecznie pozostać. Po ich usunięciu nie da się otworzyć żadnej strony.
Dokumentu w formie bundled nie trzeba zapisać w formie rozdzielonej przed rozbieraniem. W programie djvused komendą select dokonuje się zaznaczenia danej strony, a potem komendą save-page-with można ją zapisać jako samodzielną

W długim pliku wsadowym nie ma nic złego, poza tym, że wymaga on stworzenia ;-) . A w moim przypadku linijek jest ponad 1000 ;-) . Ale i to nie jest zbyt trudne. Ja zawsze robię to w Excelu. Ciągnę myszką i wszystko - z odpowiednią numeracją - powiela się samo ;-) .

Bardzo dziękuję za skrypty. Jesteście super !!

Dopisano 2-7-2011: Przy dokumentach wielostronicowych program bardzo wolno działa. Czym więcej stron dokument posiada, tym wolniej strony są zapisywane. Rozbicie dokumentu o 2.393 stronach zajęło mojemu laptopowi 2 godziny 48 minut.
 
     
Wyświetl posty z ostatnich:   
Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Biblioteka 2.0 : Forum społeczności czytelników i bibliotekarzy cyfrowych [Dokument elektroniczny] - Tryb dostępu http://forum.biblioteka20.pl
Korzystanie z portalu oznacza akceptację naszej polityki prywatności.
Strona wygenerowana w 0.07 sekundy. Zapytań do SQL: 9