Autor Zpráva
stepanka
Profil *
Ahoj,

neporadil by mi prosím někdo, jakým způsobem by se dala spustit *.exe aplikace v PHP na Windows XP?

Potřebovala bych spustit program pdftotext.exe (stažena verze "xpdf-3.02pl4-win32.zip" odsud). Skript z webu, který předpokládá, že to poběží na Linuxu, vypadá takto:

$pdf_filename = "nazev_souboru";
for($i=1; $i <= $pages; $i++) {
	exec("pdftotext -f ".$i." -l ".$i." ".$pdf_filename.".pdf ".$pdf_filename.$i.".txt");
}


A na Windowsech to takto spustit nejde. Hledala jsem různé alternativy té funkce, ale žádná zatím nefungovala. Ani to nevypisuje žádnou chybu. Nevěděl by někdo, co s tím?

Moc děkuju.
nightfish
Profil
zkus místo exec() použít system() - vypíše to výstup na obrazovku
stepanka
Profil *
nightfish:
Děkuju za reakci.

Když použíju system(), tak se na obrazovku nic nevypíše. Akorát 4 warningy, protože o pár řádků dál skript předpokládá, že ty soubory s příponou .txt byly vytvořeny. Ale ohledně příkazu system() vůbec nic. Error_reporting mám nastaveno na "E_ALL". Když nahlídnu do error logu, vidím tak mockrát za sebou:

c:/windows/system32/cmd.exepdftotext není názvem vnitřního ani vnějšího příkazu, spustitelného programu nebo dávkového souboru.



O několik řádků výše mám:

$output = shell_exec("pdfinfo ".$pdf_filename.".pdf");


a to mi funguje bezchybně. Na program "pdftotext" ale ta funkce "shell_exec" nefunguje.

Není třeba problém v tom: pdftotext -f ".$i." -l ".$i." ".$pdf_filename.".pdf ".$pdf_filename.$i.".txt"?
stepanka
Profil *
Tak už mi to funguje. Ten ukázkový PDF soubor, který jsem ke skriptu stáhla, byl nějak chráněn proti úpravám, nebo kopírování.. S jinými soubory to funguje.
AM_
Profil
stepanka:
a to mi funguje bezchybně. Na program "pdftotext" ale ta funkce "shell_exec" nefunguje.
shell_exec neslouží ke spouštění programů, ale ke spouštění příkazů shellu (na windows příkazové řádky). Sice je nějaké divné, že ti to parametr shell_exec nalepí přímo na cestu k příkazové řádce (odtud cmd.exepdftotext, jak napovídá chyba), nicméně programy je určitě správnější spouštět přes exec() nebo system().

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: