DokuWiki

It's better when it's simple

Användarverktyg

Webbverktyg


Sidmeny

Translations of this page?:

Learn about DokuWiki

Advanced Use

Corporate Use

Our Community


Follow us on Facebook, Twitter and other social networks.

sv:samba_pdf_to_wiki

For you who don't understand swedish and want to know what's all about se tread http://forum.dokuwiki.org/thread/8071

Guide för att få samba share på media bibloteket i dokuwiki samt pdf import

Skrivet detta inlägg mera som en blog för att få med att det kanske är fler än du som har det svårt med Linux.

Själv går jag under kategorin nybörjare. Vilket har resulterat i att detta ”projekt” har tagit all fritid under minst 2 månader.

Nu finns det mycket felstavningar etc som jag ej orkar kolla igenom då projektet havererade på upploppet.

Ni som är intresserad läs igenom då det förhoppningsvis finns något mat nyttigt att ta till sig.

Skriv gärna någon synpunkt/komentar (längst ner på sidan). Alltid roligt med komentarer.

Utvecklingsmiljö

Hårdvara : qnap TS-219P II

Operativ : Debian Squeeze http://www.cyrius.com/debian/kirkwood/qnap/ts-219/install.html

Samba

Först skapar vi en användare i linux

adduser dokuwiki

sedan skapar vi användare i samba

smbpasswd -a dokuwiki

sedan lägger vi till användaren www-data (apache körs under den användaren) i gruppen för dokuwiki

enklast är det att editera /etc/group

nano /etc/group
......
crontab:x:102:
ssh:x:103:
Debian-exim:x:104:
mlocate:x:105:
ssl-cert:x:106:
pernils:x:1000:
mysql:x:107:
messagebus:x:108:
sambashare:x:109:
dokuwiki:x:1001:dokuwiki,www-data

sedan ändrar vi ägargruppen på media bibloteket

root@qnap:~# cd /var/www/dokuwiki/data
root@qnap:/var/www/dokuwiki/data# chown www-data:dokuwiki media
root@qnap:/var/www/dokuwiki/data#

Dubbel kolla att det vart rätt

root@qnap:/var/www/dokuwiki/data# ls -l
totalt 68
drwxr-xr-x  2 www-data www-data  4096 28 jan 17.24 attic
drwxr-xr-x 17 www-data www-data  4096 28 jan 17.28 cache
-rw-r--r--  1 www-data www-data  7180 25 jan 14.39 deleted.files
-rw-r--r--  1 www-data www-data     0 25 jan 14.39 _dummy
drwxr-xr-x  2 www-data www-data  4096 28 jan 17.24 index
drwxr-xr-x  2 www-data www-data  4096 28 jan 17.32 locks
drwxrwxr-x  4 www-data dokuwiki  4096 28 jan 17.28 media
drwxr-xr-x  2 www-data www-data  4096 25 jan 14.39 media_attic
drwxr-xr-x  2 www-data www-data  4096 28 jan 16.59 media_meta
drwxr-xr-x  2 www-data www-data  4096 28 jan 16.51 meta
drwxr-xr-x  4 www-data www-data  4096 28 jan 16.44 pages
-rw-r--r--  1 www-data www-data  7917 25 jan 14.39 security.png
-rw-r--r--  1 www-data www-data 12093 25 jan 14.39 security.xcf
drwxr-xr-x  2 www-data www-data  4096 28 jan 17.02 tmp
root@qnap:/var/www/dokuwiki/data#

Nu kan samba användaren (dokuwiki) lägga till filer men inte ta bort filer som lagts till genom Media Manager i dokuwiki.

Men Media Manager i dokuwiki kan ta bort filerna som lagts till av samba användaren.

Om vi nu skulle lägga till samba användaren i gruppen www-data så har vi ett säkerhetsproblem då användaren kan ta bort programfiler ur själva wikin.

Sedan måste vi lägga till själva utdelningen i smb.conf

nano /etc/samba/smb.conf

gör en ny utdelning

[dokuwiki]
    path = /var/www/dokuwiki/data/media
    browseable = yes
    writable = yes
    create mask = 0775
    directory mask = 0775

Nu kan vi komma åt utdelningen ifrån windows \\servernamn_eller_ip_address\dokuwiki

fixa åäö

En bra länk att läsa http://lists.debian.org/debian-user/2007/06/msg00382.html

Nästa sak att ordna är att vi vill kunna hantera filer med åäö.

(Om ni nu använder er av SSH via putty kom ihåg att sätta Translation till UTF-8.)

Först måste vi se till att våran server kör rätt locale (sv_SE.UTF-8)

root@qnap:/var/www/dokuwiki/data# env
TERM=xterm
SHELL=/bin/bash
SSH_CLIENT=192.168.1.2 1443 22
SSH_TTY=/dev/pts/0
USER=root
MAIL=/var/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/var/www/dokuwiki/data
LANG=sv_SE.UTF-8
SHLVL=1
HOME=/root
LOGNAME=root
SSH_CONNECTION=192.168.1.2 1443 192.168.1.12 22
_=/usr/bin/env
OLDPWD=/var/www/dokuwiki/data/media
root@qnap:/var/www/dokuwiki/data#

Om ni inte har det så kör ni komandot

root@qnap:/var/www/dokuwiki/data# dpkg-reconfigure locales

När det är ordnat så gäller det att även ställa in Apache genom att lägga till AddDefaultCharset = UTF-8 i /etc/apache2/sites-available/default

root@qnap:/etc/apache2/sites-available# nano default

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
    
        AddDefaultCharset UTF-8
        .....
        ...

När det är klart så måste vi även installera ett plugin i Dokuwiki så att filer som läggs in med hjälp av Media Manager bibehåller sitt namn.

http://www.dokuwiki.org/plugin:preservefilenames

Nu kan vi lägga in filer med namn som innehåller åäö ifrån Media Manager men tyvär inte ifrån samba share. Likaså är det med stora bokstäver. Finns beskrivit i länken ovan.

mime.conf

Eftersom vi kan lägga in vad som helst ifrån samba share så måste vi ha koll på att filändelsen finns registrerad i filen mime.conf.

/var/www/dokuwiki/conf/mine.conf

http://www.dokuwiki.org/mime

Om ändelsen inte finns registrerad så går det inte att lägga till den filen likaså syns den inte i Media Manager.

För att kunna komma till rätta med det lite enklare än att hela tiden SSH till servern och ändra i mim.conf gör vi så här.

root@qnap:cd /var/www/dokuwiki/data/pages
root@qnap:/var/www/dokuwiki/data/pages# mkdir config
root@qnap:/var/www/dokuwiki/data/pages# cd config
root@qnap:/var/www/dokuwiki/data/pages/config# ln -s /var/www/dokuwiki/conf/mime.conf mime_conf.txt

Kom ihåg nu att du redigerar själva mime.conf så att du inte raderar den. För säkerhetsskull ta en backup.

root@qnap:/var/www/dokuwiki/data/pages/config# cp /var/www/dokuwiki/conf/mime.conf /var/www/dokuwiki/conf/mime.conf.bakup

För att kunna göra interna länkar med åäö (ex. översta sidan så måste vi sätta deaccent till av i inställningar under admin.

Vad som inte funkar är att skapa sidan med åäö direkt i URL:en (ex. 192.168.1.12/dokuwiki/doku.php?id=ööö).

Någon som har en lösning?

Vad som återstår är ett script som lägger in dom filerna som har stora bokstäver samt åäö i rätt format i bibloteket media_meta.

Tyvärr har jag inte ett något sådant men kanske någon som är mera kunnig kanske skulle kunna bistå med det.

.htaccess

En sista sak som inte har med själva dokuwiki och samba är att istället för att använda AllowOverride All som ger en viss prestanda förlust då apache hela tiden skall läsa .htaccess filerna.

utan används istället AllowOverride None och LocalMatch istället för att begränsa åtkomsten.

Min konfiguartion

<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        AddDefaultCharset UTF-8

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

    #  for dokuwiki to not use the AllowOverride All
        <Directory /var/www/dokuwiki>
            order deny,allow
            allow from all
        </Directory>
    # deny sub directorys  data|conf|bin|inc
        <LocationMatch "/dokuwiki/(data|conf|bin|inc)/">
            order allow,deny
            deny from all
            satisfy all
        </LocationMatch>

OpenOffice to DokuWiki

Iden bakom detta projekt är att kunna importera dokument in i wikin så att dom blir sökbar.

Efter att hitta sidan http://www.dokuwiki.org/tips:doc_to_wiki_syntax?&#dokuwiki__top så började jag nysta i hur man skulle kunna göra.

Sökandet gav ingen lösning på problemet. Det makro som fanns att tillgå gav bara bildreferensen i löpande format [picture1.png] .. [picture2.png] etc. Bilderna i sig själv sparades inte ut.

Om du själv vill testa så har du makrot http://www.ooowiki.de/Writer2DokuWiki

Sedan vad du skall ändra för att få med länken till bilderna http://www.dokuwiki.org/tips:openofficemacro

Klistrar inte in koden på justerat makro då det tar alldeles för stor plats. Men ovanstående länkar borde ge tillräckligt med information.

Batch körning i OpenOffice

Tog mig en funderade över om man har många dokument som skall konverteras. Blir lite jobbigt att göra varje fil för sig.

Letade och hittade ett verktyg (makro) som körs i OpenOffice som kan batch köra hela biblotek.

http://oooconv.free.fr/batchconv/batchconv_en.html

Hittade även ett annat bra makrohttp://extensions.services.openoffice.org/project/writertools. writertools kan även exportera direkt till wiki syntax.

OpenOffice Headless

OpenOffice i headless mode körs i java och det är ett stort och minneskrävande app. att dra igång.

Eftersom jag har provat alfresco på en lite sämre maskin och då den gick i stå när jag lade upp dokument så började jag kolla efter andra alternativ.

Fastande då istället för själva konverteringen pdf → html → wiki syntax.

Och skall man hård dra det så är pdf att fördra som utgångspunkt för då man kan till exempel ta ritningar som är utskriven som pdf. Dock kommer stordelen av innehållet att bli en bild men själva filnamnet får ju man med i indexeringen.

pdftohtml

Så började en lång veckas letande efter lösning på pdf → html.

Hittade ett programpaket kallad pdftohtml http://pdftohtml.sourceforge.net/

Tog ner version 0.39 och skulle kompilera som alltid ges bilden av att det är så härligt. Det vart stopp direkt. Dels hade jag ingen kompilator och inte make scriptet.

apt-get install make g++ gcc

Efter det så haltade kompileringen ändå. Efter mera letande så fanns att det var en anrops procedur som hade ändrat sin syntax.

källa http://sourceforge.net/tracker/?func=detail&aid=2008566&group_id=45839&atid=444240

Vad som sägs är att man skall ändra i HtmlLinks.h

diff ./pdftohtml-0.39/src/HtmlLinks.h.orig
./pdftohtml-0.39/src/HtmlLinks.h
22c22,24
< GBool HtmlLink::isEqualDest(const HtmlLink& x) const;
---
> /* yoyo fix */
> /* GBool HtmlLink::isEqualDest(const HtmlLink& x) const; */
> GBool isEqualDest(const HtmlLink& x) const;

Okej den kompilerade med en massa varningar :pdftohtml.cc:136: warning: deprecated conversion from string constant to ‘char*’

Dessa skulle enligt http://blog.wolffmyren.com/2008/05/02/g-warning-deprecated-conversion-from-string-constant-to-%E2%80%98char%E2%80%99/ inte vara något problem utan bara en varning.

I alla fall dök programmet upp i pdftohtml-0.39/src# men jag sökte andra alternativ på pdftohtml. Hittade till slut att det även fanns med i paketet poppler-utils.

Lite mera info om ämnet http://doc.nuxeo.com/display/KB/Document+preview+is+not+satisfactory

poppler-utils (ingen bra lösning)

apt-get install poppler-utils

Eftersom jag kör debian så får jag bara version 0.12 (tror det var det) på pdftohtml. Det har med att göra med att den är den enda stabila utgåvan. Den gamla versionen roterar alla bilderna i pdf filen 90 grader av någon anledning. Fine då tar jag och kompilerar den själv då. http://poppler.freedesktop.org/ Tog hem 0.18.3

root@qnap:/var/www/pdf/#wget http://poppler.freedesktop.org/poppler-0.18.3.tar.gz
root@qnap:/var/www/pdf/#tar -xvf oppler-0.18.3.tar.gz
root@qnap:/var/www/pdf/#cd poppler-0.18.3
root@qnap:/var/www/pdf/poppler-0.18.3#./configure
..
..
checking for freetype-config... no
checking which font configuration to use... fontconfig
checking for FONTCONFIG... no
configure: error: in `/var/www/pdf/dd/poppler/poppler-0.18.3':
configure: error: The pkg-config script could not be found or is too old.  Make sure it
is in your PATH or set the PKG_CONFIG environment variable to the full
path to pkg-config.

Alternatively, you may set the environment variables FONTCONFIG_CFLAGS
and FONTCONFIG_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

To get pkg-config, see <http://pkg-config.freedesktop.org/>.
See `config.log' for more details

Fick installera pkg-config

root@qnap:/var/www/pdf/poppler-0.18.3/#apt-get install pkg-config

Varningar igen angående PKG_CONFIG_PATH och fontconfig… mera sökande gav http://www.linuxquestions.org/questions/linux-software-2/how-to-adjust-pkg_config_path-fontconfig-2-4-0-config-error-490541/

root@qnap:/var/www/pdf/poppler-0.18.3/# locate pkgconfig
/usr/lib/pkgconfig
/usr/share/pkgconfig
/usr/share/pkgconfig/iso-codes.pc
/usr/share/pkgconfig/shared-mime-info.pc
/usr/share/pkgconfig/udev.pc
/usr/share/pkgconfig/usbutils.pc
root@qnap:/var/www/pdf/poppler-0.18.3/# PKG_CONFIG_PATH=/usr/lib/pkgconfig
root@qnap:/var/www/pdf/poppler-0.18.3/# export PKG_CONFIG_PATH

Sedan var det här med fontconfig.

root@qnap:/var/www/pdf/poppler-0.18.3/#apt-get install apt-file
root@qnap:/var/www/pdf/poppler-0.18.3/#apt-file update
...
root@qnap:/var/www/pdf/poppler-0.18.3/#apt-file search fontconfig
...
libfontconfig1-dev: /usr/include/fontconfig/fontconfig.h
libfontconfig1-dev: /usr/lib/libfontconfig.a
libfontconfig1-dev: /usr/lib/libfontconfig.so
libfontconfig1-dev: /usr/lib/pkgconfig/fontconfig.pc

Med apt-file search [lib] så kan man se vilket paket som den ingår i. http://en.wikipedia.org/wiki/Apt-file

root@qnap:/var/www/pdf/poppler-0.18.3/#apt-get install libfontconfig1-dev
..
root@qnap:/var/www/pdf/poppler-0.18.3/./configure
root@qnap:/var/www/pdf/poppler-0.18.3/./make

Ingen pdftohtml hittades i /utils

Letade vidare … http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=644447 https://github.com/davvil/Pdf-Presenter-Console

Verkar bara vara version 0.16 som skulle funka med Debian

Gjorde samma procedure med 0.16.7 som resulterade i pdftohtml version 0.16.7. Hm poppler verkar ge pdftohtml samma version som deras stora paket har.

Verifieras också då pdftohtml 0.39 uppdaterades senast 2006-08-03 medans poppler-utils 0.16.7 modifierades senast 2011-05-27. Så här blir det att pröva vilken som funkar bäst. Poppler-utils 0.12.4-1.2 http://packages.debian.org/sv/squeeze/poppler-utils gav roterade bilder ifrån pdf filen även fast den har ändringsdatum 2007-02-10.

Alltså får prova mig fram med pdftohtml 0.39 ifrån http://sourceforge.net/projects/pdftohtml/files/pdftohtml/ eller pdftohtml ifrån poppler-utils 0.16.7.

För att kunna köra med option -c som står för komplex måste jag även installera ghostscript http://en.wikipedia.org/wiki/Ghostscript.

root@qnap:/var/www/pdf/#apt-get install gs

Html to Wiki...(html2wiki)

Så var det dags att ta tag i den andra biten nämligen html till wiki syntax.

Med hjälp av det nyupptäckta verktyget apt-file search … och vetskap att paketet skall heta något med wikikonveter ……

root@qnap:/var/www/htmltowiki# apt-file search wikiconverter
libhtml-wikiconverter-dokuwiki-perl: /usr/share/doc/libhtml-wikiconverter-dokuwiki-perl/README
libhtml-wikiconverter-dokuwiki-perl: /usr/share/doc/libhtml-wikiconverter-dokuwiki-perl/buildinfo.gz
libhtml-wikiconverter-dokuwiki-perl: /usr/share/doc/libhtml-wikiconverter-dokuwiki-perl/changelog.Debian.gz
libhtml-wikiconverter-dokuwiki-perl: /usr/share/doc/libhtml-wikiconverter-dokuwiki-perl/changelog.gz
libhtml-wikiconverter-dokuwiki-perl: /usr/share/doc/libhtml-wikiconverter-dokuwiki-perl/copyright
....

Jo det finns ett färdigt paket klart att installera → libhtml-wikiconverter-dokuwiki-perl.

Sökning på nätet gav http://packages.debian.org/sv/lenny/libhtml-wikiconverter-dokuwiki-perl .. version 0.53-1

Enligt http://cpansearch.perl.org/src/DIBERRI/ är senaste versionen 0.68.

Kollar i http://cpansearch.perl.org/src/DIBERRI/HTML-WikiConverter-0.68/Changes om det är mödan värt att köra en manuell installering.

Mycke bugg fix och utökning av funktionalitet gav det senare alternativet.

root@qnap:/var/www/htmltowiki# which perl
/usr/bin/perl

Jo perl verkar finnas installerat.

root@qnap:/var/www/htmltowiki# perl -MCPAN -e 'install HTML::WikiConverter::DokuWiki

Gav efter ett stunds tuggande och varningar …

Test Summary Report
-------------------
t/dokuwiki.t    (Wstat: 512 Tests: 0 Failed: 0)
  Non-zero exit status: 2
  Parse errors: No plan found in TAP output
Files=5, Tests=4,  1 wallclock secs ( 0.19 usr  0.02 sys +  0.69 cusr  0.05 csys =  0.95 CPU)
Result: FAIL
Failed 1/5 test programs. 0/4 subtests failed.
make: *** [test_dynamic] Fel 255
  DIBERRI/HTML-WikiConverter-DokuWiki-0.53.tar.gz
  make test -- NOT OK
//hint// to see the cpan-testers results for installing this module, try:
  reports DIBERRI/HTML-WikiConverter-DokuWiki-0.53.tar.gz
Warning (usually harmless): 'YAML' not installed, will not store persistent state
Running make install
  make test had returned bad status, won't install without force
Could not read '/root/.cpan/build/Params-Validate-1.00-eN4fuJ/META.yml'. Falling back to other methods to determine prerequisites
root@qnap:/var/www/htmltowiki#

Nu sjabblade jag till det då jag sökte om det fanns något htmltowiki

root@qnap:/var/www/htmltowiki# updatedb
root@qnap:/var/www/htmltowiki# locate htmltowiki
/var/www/htmltowiki
root@qnap:/var/www/htmltowiki# 

Och det gjorde det inte då programmet heter html2wiki. Vart i alla fall

root@qnap:/var/www/htmltowiki# apt-get install libhtml-wikiconverter-dokuwiki-perl

Sedan provade jag att köra remove. Hur som haver så åkte det in igen med apt-get install libhtml-wikiconverter-dokuwiki-perl.

Så ingen klarhet om version 0.68 går att installera på debian squeeze troligen inte så kör det färdiga paketet.

Mera om installation av wikiconveter http://www.stercus.com/omniwiki/index.php5?title=HTML2Wiki

Script

Då skall vi sy ihop allt det här då. Tanken är att man skall kunna släppa en pdf i en mapp som sedan behandlas av pdftohtml → (htmlsidan spars i en mapp med samma namn som filen) → html2wiki →wiki syntaxen spar i rätt mapp/namespace under /data/pages samt att länkarna till bilderna ordnas till rätt mapp.

Strukturen på processen

först skissa på strukturen

dokuwiki/data/media--pdf_import
           |               |
           |               |--pdf_file1
           |               |             
           |               |--pdf_file2
           |               |
           |               |--etc ..
           |
           |--pages--dokument--fil1.txt
                 |          |
                 |          |--fil2.txt
                 |          |
                 |          |--etc ... 
                 |
                 |--logg.txt
  • pdf_import .. där släpps pdf filen/filerna
  • pdf_file1 . biblotek som får namnet av den ”normaliserade” pdf filen. Den ”normaliserade” pdf filen kopieras dit samt pdftohtml data sparas här.
  • dokument .. där kommer html2wiki datat sparas i samma namn som pdfilen +.txt
  • logg.txt .. där är det tänkt att spara löpande logg text ifrån processen.

Bash Debugger

För att skriva bash script så kan det vara en fördel att använda sig av en debugger.→ http://bashdb.sourceforge.net/

Om man nu inte vill installera något så finns det också en inbyggd debugger i själva bash. → http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_03.html. Den inbyggda är enkel att använda. Bara skriva dit set -x där du vill se vad den gör (skriver ut standard output).

root@qnap:/var/www/pdf bash -x script.sh

set -x kan även sättas på när som helst i bash skriptet

# !bin/bash
 
name=test.txt
echo test
  set -x
  echo "${test%%.*}" I have removed the end .txt

Vilken är den bästa editorn? Om man kör ifrån windows (putty.exe) så är nano en bra kandidat. Fördelen med den gentemot mcedit är att man kan bara högerklicka i putty för att klistra in. Det som är markerat i nano är per automatik kopierat. Om man nu använder mc (midnight commander) kan man trycka ctrl+o för att växla ut i terminal läge för att testköra scriptet.

Ett annat sätt att kolla sitt script kan vara att testa det på http://www.shellcheck.net/

Normalisera 'romanize'

Eftersom dokuwiki inte stöder mellanslag och stora bokstäver så måste vi ”normalisera” http://www.dokuwiki.org/tips:romanize i skriptet kollar jag bara på stora bokstäver och mellanslag.

Bash script

Efter MÅNGA timmars surfande och debugging kom jag fram till nedanstående.

pdf_import.sh
#!/bin/bash
# file pdfimport.sh 
# Convert pdf to wiki syntax
# Take pdf file and rominize it and make a dir based on pdf file name.
# Execute pdftohtml and html2wiki on the pdf file
# Fix image url to dokuwiki syntax
# Replace the \\ with linefeed
#####################################
 
# LOGGFILE full path and file name ex. /var/www/dokuwiki/data/pages/config/logg.txt 
# Remember dir must end with /
 
LOGGFILE=/var/www/dokuwiki/data/pages/logg.txt
 
 
IMPORT_ROOT=/var/www/dokuwiki/data/media/pdf_import/
PAGES_DIR=/var/www/dokuwiki/data/pages/pdf_imported/
DOKUWIKI_MEDIA_ROOT=/var/www/dokuwiki/data/media/
 
#                           pdftohtml -c  "for complex"
PDFTOHTML="/var/www/pdftohtml -c -noframes -enc UTF-8"
HTML2WIKI="html2wiki --dialect DokuWiki"
 
 
# Set to true for configcheck (dir exists and script pdftohtml and html2wiki could be executed
RUN_CFG_CHK=true
 
clear
 
#set -x
 
cfgchk () {
# checking if I can write to $LOGGFILE, $IMPORT_DIR and $PAGES_DIR ..
if [ ! -w $LOGGFILE ]; then echo "<H1>Can´t write to loggfile"; exit 1; fi
if [ ! -w $IMPORT_ROOT ]; then echo "<H1>Can´t write to $IMPORT_ROOT  EXIT.."; exit 1; fi
if [ ! -w $PAGES_DIR ]; then echo "<H1>Can´t write to $PAGES_DIR  EXIT... "; exit 1; fi
 
#if [ $IMPORT_ROOT != $DOKUWIKI_MEDIA_ROOT ]; then  echo "<H1> I can´t find $DOKUWIKI_MEDIA_ROOT inside $IMPORT_ROOT  EXIT.. "; exit 1; fi
 
# cheking if pdftohtml and html2wiki could be executed ...
command -v $PDFTOHTML >/dev/null || { echo "<H1>Can´t execute $PDFTOHTML  EXIT.."; exit 1;}
command -v $HTML2WIKI >/dev/null || { echo "<H1>Can´t execute $HTML2WIKI  EXIT.."; exit 1;} 
echo 'You could turn the cfgchk off now e.g RUN_CFG_CHK=false' >> "$LOGGFILE"
}
 
# Mark the row bellow after you have check i all is okey
 
if $RUN_CFG_CHK ; then cfgchk; fi
 
    # loggfile  'basename $0 will give the running scripts name
    # writing to logg the script name and date and time
echo "==== Script \"`basename $0`\" is started ... $(date -u) ====" >> "$LOGGFILE"
 
    # Main loop
find $IMPORT_ROOT -maxdepth 1 -iname '*.pdf' | while read file;
  do
    # instead of string chopping you could use basename and filename
    oldfilename=$(basename "$file") 
    # write to logg what we have found (only .pdf files )
    echo "== Found file ...     \"${file##*/}\" ... ==" >> "$LOGGFILE"
    # Rominazie the file
    newfilename=$(echo "$oldfilename" | tr 'A-Z' 'a-z' | tr ' ' '_' |
    		    tr 'Å' 'å' | tr 'Ä' 'ä' | tr 'Ö' 'ö' | 
   				    sed 's/_-_/-/g');
 
   if [ "$newfilename" != "$oldfilename" ]; then
	    # Write to logg the new name
            # echo -n "text" >> file.txt  (will write "text" in the beginning of file.txt with no line feed)
            # the code bellow  will write to the end of the file with no line feed your sed implementation must support -i option
            # sed -i.bck '$s/$/After rominize......   '"$newfilename"'/ ' "$LOGGFILE"
        echo "== After rominize  .... $newfilename" >> "$LOGGFILE"
    fi
    	    # make dir based on newfilename 
	newdir="$IMPORT_ROOT""${newfilename%%.*}"   
            # create new dir
        mkdir -p "$newdir"
        echo "== Have created a new dir .. $newdir ==" >> "$LOGGFILE"
	    # copy the file no new dir with new name (new if rominized)
	cp "$IMPORT_ROOT$oldfilename" "$newdir/$newfilename"
	echo "== Copy $IMPORT_ROOT$newfilename" to "$newdir/$newfilename ==" >> "$LOGGFILE"
	    # remove old file
        rm "$IMPORT_ROOT/$oldfilename"
	echo "== Removed $IMPORT_ROOT$oldfilename ==" >> "$LOGGFILE"
 
    # convert from pdf to html  using the -c option (complex)
    # mark that -enc is not shown in the help for pdftohtml it is in xftp
    # Exec pdftohtml and write it to $LOGGFILE
    $PDFTOHTML $newdir/$newfilename $newdir/${newfilename%%.*}.html >> "$LOGGFILE"
 
 
 
    # Convert html to wiki syntax and fix the right path for pictures
    # first create a dummy url so we can find and replace that with correct path to pictures in wiki syntax 
    dummy=/dummy/
    # Convert to wiki syntax in the same dir as rominized pdf file
    echo "$HTML2WIKI --base-uri /dummy/ $newdir/${newfilename%%.*}.html $newdir/${newfilename%%.*}.txt" >> "$LOGGFILE" 
    $HTML2WIKI --base-uri /dummy/ $newdir/${newfilename%%.*}.html > $newdir/${newfilename%%.*}.txt
 
    # We take $IMPORT_ROOT and chop off $DOKUWIKI_MEDIA_ROOT and add $newdir with the $IMPORT_ROOT chopped off
    mediapath="${IMPORT_ROOT##"$DOKUWIKI_MEDIA_ROOT"}${newdir##"$IMPORT_ROOT"}"/
    # Repacing all the / with wiki's :
    mediapath=":$(echo "$mediapath" | tr '/' ':')"
echo "$mediapath"
    # Replacing the dummy string "/dummy/" with the correct wiki syntax path -> $mediapath in the .txt file
    # sed -i (-i in place= "on the spot")
 
    sed -i "s/\/dummy\//$mediapath/g" "$newdir/${newfilename%%.*}".txt
    # Replace \\ with line feed
    sed -i "s/\\\/\n/g" "$newdir/${newfilename%%.*}".txt
    cp "$newdir/${newfilename%%.*}".txt "$PAGES_DIR/${newfilename%%.*}".txt
done

När jag var klar så började jag fundera över hur jag skulle kunna starta scriptet utan att använda bash shell. Började då att titta på php.

PHP script

Efter att provat lite med php så insåg jag snart att det behövs mera hjälp medel för att ”debugga” än bara webläsaren. Kollade först Komodo Edit som i sig själv inte är en debugger men har ”highlightning” och kodförslag. Men det räckte inte.

Efter att ha läst igenom den här sidanhttp://devzone.zend.com/1120/introducing-xdebug/. Så vart jag övertygad att xdebug och eclipse är vägen att gå. Fördelen är att xdebug kan köras på remote server och eclipse är plattforms oberoende.

Så med apt-file search xdebug fick jag fram att det fanns ett färdigt paket → php5-xdebug.

root@qnap:/var/www# apt-get install php5-xdebug

Sedan var det att editera php.ini (/ect/php5/apache2) och lägga till

zend_extension=/usr/lib/php5/20090626+lfs/xdebug.so

[debug]
; Remote settings
xdebug.remote_autostart=off
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9000 

För att kolla var din xdebug.so finns någon stans …

root@qnap:/var/www#updatedb         # updaterar din databas över alla filer
root@qnap:/var/www#locate xdebug.so

Sedan var det eclipse PDT → http://www.eclipse.org/pdt/downloads/ Under tiden som den stora filen laddades ner.. kollade jag runt lite och fann Netbeans. http://netbeans.org/kb/docs/php/debugging.html Eftersom jag sitter på windows klient så tog jag ner den också.

Netbeans var bara på 47 mb och eclipse var på ett par hundra mb. Det vart netbeans.

Så för att köra remote debugg på netbeans så behövs det ftp.

root@qnap:/etc/proftpd#apt-get install proftpd
...
root@qnap:/etc/proftpd#../init.d/proftpd start
Stopping ftp server: proftpd.
Starting ftp server: proftpd - warning: unable to determine IP address of 'qnap'
 - error: no valid servers configured
 - Fatal: error processing configuration file '/etc/proftpd/proftpd.conf'

Aaahh … in och fixa proftpd.conf. Testa igen .. samma fel. Någonting med host. In i host filen och la till ip adressen och host namnet.

127.0.0.1       localhost
127.0.1.1       qnap219pII.example.org  qnap219pII
192.168.1.12    qnap

Efter att satt in rätt i Netbeans kom det som jag redan viste att filen måste laddas upp till /var/www/[något biblotek] Provade med symlink ln -s men ingen framgång. Så det vart att skapa en ny användare www-ftp

root@qnap:/etc#adduser www-ftp

Sedan så bytte jag dess hembiblotek till /var/www/www-ftp i passwd filen

root@qnap:/etc#nano passwd
......
proftpd:x:106:65534::/var/run/proftpd:/bin/false
www-ftp:x:1002:1003:,,,:/var/www/www-ftp:/bin/bash
......
root@qnap:/etc#mkdir /var/www/www-ftp
root@qnap:/etc#chown www-ftp:www-ftp /var/www/www-ftp

Nu när allt verkar funka så uppkom det problem med att debugg hela tiden öppnar en ny flik i firefox. Kom runt det med ett plugin → https://addons.mozilla.org/sv-se/firefox/addon/tab-mix-plus/

Så nu hade jag en fungerande utvecklings miljö. Började arbetet att försöka porta så mycket som möjligt till php för att få feedback på att saker och ting fungerade. Efter att fått romanizeringen och fil kopiering att fungera stöp det ändå på pdftohtml som inte ville spotta ut något på skärmen.

Efter 3 dagars letande så var det att man skulle lägga till växlen 2>1& för att sammanfoga STDERR till STDOUT som php kan fånga upp. I samma veva funderade jag över hur man skulle kunna förhindra att användaren släcker ner webläsaren. Provade lite med att köra första bash scriptet i bakgrunden med nohup.

Efter diverse tester så kom jag även på att kolla lite närmare på den färdiga txt filen. Såg då till min fasa att det inte skulle gå att använda. Html2wiki ger en txt fil som ser för jä.. ut.

Alternativ till html2wiki

Efter letande på nätet hittade jag ett php bilotek för att parsa html

http://simplehtmldom.sourceforge.net/

tutorial om hur man använder det.. http://net.tutsplus.com/tutorials/php/html-parsing-and-screen-scraping-with-the-simple-html-dom-library/.

Hittade även att skaparen av Dokuwiki Andreas Gohr har varit och tittat på html parsern.

http://www.freelists.org/post/dokuwiki/dokuwiki2html

Själv har jag inte kunskap och tid (har redan bränt 2 månader) att skriva det själv. Undrar om det finns redan eller någon vänlig själ vill ta vid där jag gav upp.

En annan sak som bör nämnas är att bilderna som pdftohtml plockar ut ur pdf filen håller mycket dålig kvalitet. Möjligt att det finns något knep för att få bättre kvalitet.

Kom gärna med synpunkter

Startade en tråd för att se om någon kan komma upp med en lösning. http://forum.dokuwiki.org/thread/8071


Gör gärna ett inlägg nedan om det är något av min ”blog” som varit mat nyttigt. Skulle vara uppmuntrande med lite feedback efter nederlaget.


sv/samba_pdf_to_wiki.txt · Senast uppdaterad: 2013/11/05 09:18 av 62.63.206.88