» »

.doc in .pdf v string

.doc in .pdf v string

DiTi ::

Delam na enem projektu, kjer želi stranka, da bi uporabnik naložil datoteko .doc oz. .pdf, ter bi mu avtomatsko izpisalo, koliko besed vsebuje datoteka (gre za stran za prevajanje, torej bi izračunalo okvirno ceno prevajanja za nek dokument). Zadeva že deluje super za .txt datoteke. Ampak pri doc (ima prednost pred pdf) pa se stvar zakomplicira saj ne obstaja funkcija, ki bi razčlenila vsebino .doc datoteke in bi jo shranla v string.

Koliko sem pogooglal, potrebuješ za to na strežniku celo neke dodatne "programe", ki tečejo v ozadju. Pri nekaterih je zahtevan celo nameščen Word (odpre datoteko ter jo shrani kot txt). Problem je, da stran laufa na najetem strežniku, in dodatno nameščanje ni rešitev.

Torej, ima kdo že izkušnje s tem? Zna svetovat v pravo smer? Lahko tudi več korakov, torej recimo doc->pdf->rtf->php ali kaj podobnega.

Hvala za odgovore.

hamax ::

DiTi ::

odpade zaradi tega:

To read PDF files, you will need to install the XPDF package, which includes “pdftotext.” Once you have XPDF/pdftotext installed, you run the following PHP statement to get the PDF text:

pregooglal sem že ogromno strani, tako da rezultati s prve strani pod "doc to php" ne bodo pomagali

hamax ::

Nekaj zelo pribliznega lahko naredis tako:
<?php
	$handle = fopen("test.doc", "rb");
	$word = 0;
	while (!feof($handle)) {
		$ch = fread($handle, 1);
		if ($ch == ' ') {
			$word++;
		}
	}
	echo $word;	
?>

Testiral sem samo za doc, ki ga izvozi OOo. Ce odstejes 10, dobis pravilno stevilo besed. Ce bi zelel bolj natancno steti, bi pa moral malo prebrati dokumentacijo za doc.

DiTi ::

po takem bi moral odštet 54. takrat dobim dokaj natančno število. če ne bo druge rešitve bom uporabil verjetno kar to. zaenkrat pa še nisem zadovoljen s tem.

hvala vseeno za pomoč.

Ziga Dolhar ::

Um. Sicer se nikoli nisem ukvarjal z branjem Word datotek, ampak ... glede na to, da ...

a) ne gre za plain text, in
b) gre za binarni zapis ...

... bo natančnost takšne metode nekje na nivoju file_size / average_word_length * 0,8. Pa še to zgolj za zelo velike datoteke :).
https://dolhar.si/

Zgodovina sprememb…

CrustyDOD ::

S pomočjo COMa probaj..

En primer: http://drewd.com/2007/01/25/reading-fro...

arjan_t ::

S pomočjo COMa probaj..

En primer: http://drewd.com/2007/01/25/reading-fro...


in si omejen na windows ...

DiTi ::

zadevo mi celo uspelo uredit brez dodatnih programov. za docx sem uporabil najprej zip da dobiš document.xml nato pa parser da iz xmlja dobim vsebino. za doc pa tudi obstaja enostavna funkcija, le googlat je bilo potrebno, alot :P

techfreak :) ::

Za PDF bo težko.

DiTi ::

verjamem. ampak trenutno je bo to dovolj.

mojca ::

Spodaj je prekopiran odgovor z enega od dopisnih seznamov, kjer je nekaj porabnikov prosilo za implementacijo števca besed za TeX-ove PDF dokumente (upam, da ni narobe, ker je v angleščini); samo nekaj točk v razmislek. Pri PDF dokumentih si kar predstavljam, da ti bodo ljudje nalagali skenirane dokumente ali prospekte z besedilom v binarni sliki ali s pisavo, pretvorjeno v krivulje, in bo cena popolnoma napačna (ampak če gre za oceno, je v redu).

Teče strežnik na windowsih ali na linuxu? Za windows se dobi ena navadna exe datoteka pdftotext, ki jo lahko enostavno skopiraš tja, kjer so ostale skripte. Ni potrebna nobena posebna inštalacija. Za linux je mogoče narediti isto, vendar je potrebno "pravilno prevesti" izvorno kodo programa pdftotext. Obstajajo seveda tudi druge knjižnice za branje PDF-jev, vendar je pdftotext morda najbolj "enostavna & hitra" rešitev, lahko pa pogledaš ostale knjižnice, če te bodo PDF-ji še zanimali.


Counting words in the resulting PDF probably works a bit better, but even then:
- there are page numbers as well as headers & footers
- there are section numbers
- there are footnote numbers
- there are math formulas (how many words are
\sqrt{a+b+\sin\alpha=\hbox{something}}?), formula numbers and
fractions that get split into multiple numbers in PDF
- there are tables with numbers, numbers are sometimes separated with dot, sometimes with commas (almost impossible to guess whether comma is thousand/decimal separator or separator between numbers)
- you can create graphic and place some labels on the figure; whether those labels will count or not will depend on the tool that you use for figures (precompiled or not); worse - you can probably even include tables as existing PDF figures
- there are hyphenated words and words like \alpha-helix, \gamma-rays
- there are accented letters that PDF viewers are not able to handle properly
- this must be a bug in apple library, but when I copy-paste text from PDF I get both accents lost and words are being split before letter j into two

If you need just informative word count, anything can do (copy from pdf and paste into word or "wc" in command line), but if you need to write an article with exactly some number of words or if you need to charge a client for translation of text that's X words long ... those statistics can be highly misleading and I would not rely on them.

DiTi ::

Hvala za to besedilo, to je vse res. Načeloma lahko tudi word vsebuje kakšne tabele, grafe, formule itd, kar bo zmedlo celoten program. Ampak ker stranka zahteva, da deluje tudi za pdf, potem more delovat tudi za pdf, bom pa seveda opozoril na vse to.

lp

dskvo ::

Za štetje besed v PDF dokumentu uporabi brezplačne knjižnice:
PDFBox-0.7.2.dll
IKVM.GNU.Classpathkatere dodaš kot referenco.

Knjižnico:
IKVM.Runtime.dll
pa samo skopiraš v mapo bin.

Sam postopek je sledeči:
PDDocument doc = PDDocument.load(@"C:\pdf.pdf");
PDFTextStripper strip = new PDFTextStripper();
int wordCount = strip.getText(doc).Split(Convert.ToChar(strip.getWordSeparator())).Length;

Postopek vrne natančno število besed v PDF dokumentu.
Če kaj ni jasno vprašaj.

DiTi ::

hvala, ampak nevem kako bo z namestitvijo knjižnice. načeloma pri webhostingu ne gre dodajat knjižnic.

techfreak :) ::

hvala, ampak nevem kako bo z namestitvijo knjižnice. načeloma pri webhostingu ne gre dodajat knjižnic.

PHP ali ASP.NET?

DiTi ::

php


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Politika odprte kode na univerzah

Oddelek: Problemi človeštva
372162 (1444) Gandalfar
»

Adobe in Microsoft ter PDF (strani: 1 2 3 )

Oddelek: Novice / Tožbe
10513821 (10694) Jst
»

S "kopiraj/prilepi" do zaupnega poročila

Oddelek: Novice / Zasebnost
334731 (3366) Matev
»

Poziv za zaščito Whois baze

Oddelek: Omrežja in internet
63983 (995) Bakunin
»

Pomoč pri MySQL in PHP...

Oddelek: Programiranje
161806 (1674) darh

Več podobnih tem