Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Delphi - word, broj stranica

[es] :: Pascal / Delphi / Kylix :: Delphi - word, broj stranica

[ Pregleda: 1044 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

FranjoZG
Franjo Popović
Programer
Zagreb

Član broj: 328819
Poruke: 298
*.zg3.cable.xnet.hr.



+4 Profil

icon Delphi - word, broj stranica30.03.2021. u 10:12 - pre 37 meseci
Delphi 2007
Kako dobiti broj stranica u nekom Word dokumentu? Word koristim za neka izvješća ali se moram igrati sa velčinom fonta jer moraju biti na jednoj stranici.
Učitam template i popunim podacima. Nakon toga bih trebao dobiti broj stranica novog dokumenta. Ako je broj stranica veći od 1 - smanjim font dodanog teksta, pa ponovo provjera itd. dok ne dobijem jednu stranicu.

Code:

uses
   ...
   Word2000, Office2000, ...;
...

procedure OpenDoc(tmpName: string)
var
   fwa: TWordApplication;
begin
   fwa := TWordApplication.Create(nil);
   fwa.Connect;
   fDocument := fwa.Documents.Open( tmpName, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, dn)
end;


Rudarim već par dana po web-u, ne mogu nigdje pronaći kako dobiti broj stranica. Ima primera koji ne rade...


 
Odgovor na temu

bokinet

Član broj: 29844
Poruke: 574



+50 Profil

icon Re: Delphi - word, broj stranica30.03.2021. u 12:06 - pre 37 meseci
Pogledati MS Word osobine dokumenta - posto postoji varijanta u samom MS Word da se preko fields ubaci ukupan broj strana.
Dakle ako je to u MS Word-u osobina dokumenta koliko ima strana onda ta vrednost ako je iz Delphi-ja citljiva se moze uzeti u obzir.

S' druge strane tehniki samo ostaje da se vidi da li se ta vrednost azurira prilikom snimanja ili na svaku promena sadrzaja dokumenta. Ako je u pitanju prilikom snimanja onda pre preuzimanja vrednosti ukupnog broja strana snimiti kao file pa onda preuzite vrednost osobine fields total pages.


U MS Word

(cisto za analitiku - isto preko VBA moze da se vidi kako bi se preko njega iscitala ta vrednost pa preraditi u Delphiju)

Tab INSERT

potom Quick Parts -> Field...

pa onda

na radnoj povrsini za FIELDS -> Categories (All) -> NumPages
 
Odgovor na temu

FranjoZG
Franjo Popović
Programer
Zagreb

Član broj: 328819
Poruke: 298
*.cust.tele2.hr.



+4 Profil

icon Re: Delphi - word, broj stranica30.03.2021. u 20:16 - pre 37 meseci
Kreirao sam u wordu makro koji ubacuje broj stranica u dokument, ali taj makro ne uspjevam prepisati u Delphi.

Rješio sam problem zaobilaznim putem, nije elegantno, ali radi dok ne nađem drugo rješenje.
- Koritstim TLitePDF za čitanje PDF-a. Ta klasa daje broj stranica PDF-a.
- Spremim dokument kao PDF i učitam broj stranica
- Ako je broj stranica veći od 1 tada smanjim font i ponovno spremim PDF. Smanjujem font do veličine 8 ili dok nije broj stranica = 1

Iznenađujuće brzo se sve obavi, maksimalno 4 interakcije. Od cca 2.500 dokumenata takovih kojima treba smanjivati font nema više od 20.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Delphi - word, broj stranica31.03.2021. u 13:14 - pre 37 meseci
Trebalo bi da moze sa ActiveDocument.ActiveWindow.Panes(1).Pages.Count.
Probaj da nadjes stariji office (> 15 godina) i help fajlove za VBA, i tu imas sve to.
Ili startujes Word, pa VisualBasic Editor i onda tu trazis sta ti treba.

Hvala za ovaj litePDF, nisam znao za njega, bas cu da probam.
 
Odgovor na temu

FranjoZG
Franjo Popović
Programer
Zagreb

Član broj: 328819
Poruke: 298
*.zg3.cable.xnet.hr.



+4 Profil

icon Re: Delphi - word, broj stranica31.03.2021. u 13:31 - pre 37 meseci
savkic, znam da bi nekako tako trebalo ići, ali nisam uspio otkirti kako.

ActiveDocument koristim, primjer:
fwa.ActiveDocument.SaveAs(fName, fFormat, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
wr := fwa.ActiveDocument.Bookmarks.Item(bk).Range;
if fwa.ActiveDocument.Bookmarks.Exists(bkName) then begin ...
fwa.ActiveDocument.SaveAs(fName, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
...

sve, samo ne broj stranica.

Nešto što bi (vjerojatno) trebalo vratiti property-e je:
fwa.ActiveDocument.GetTypeInfo
ali mi vraća nesuvisli podatak.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Delphi - word, broj stranica31.03.2021. u 14:12 - pre 37 meseci
Sad sam probao, ovako radi:

Code:


var
  W: OleVariant;
begin
  W := CreateOleObject('Word.Application');
  W.Visible := True;
  W.Activate;
  W.Documents.Open('Proba.doc');

  Caption := W.ActiveDocument.ComputeStatistics(wdStatisticPages) 
end;


 
Odgovor na temu

FranjoZG
Franjo Popović
Programer
Zagreb

Član broj: 328819
Poruke: 298
*.zg3.cable.xnet.hr.



+4 Profil

icon Re: Delphi - word, broj stranica31.03.2021. u 15:24 - pre 37 meseci
Koristim unit Word2000 tako da je kod nešto drugačiji, ali radi! Hvala.
Code:

var
   W: TWordApplication;
   tmpName, dn: OleVarinat;
begin 
   W := TWordApplication.Create(nil);
   W.Connect;
   tmpName := 'MojFile.doc';
   dn := true;
   W.Documents.Open( tmpName, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, dn);

   dn := false;
   Caption := ActiveDocument.ComputeStatistics(wdStatisticPages, dn);
end;



 
Odgovor na temu

_deran_

Član broj: 69493
Poruke: 252
*.cpe.sn.co.rs.



+1 Profil

icon Re: Delphi - word, broj stranica12.04.2021. u 08:51 - pre 36 meseci
Mozes i bez pokretanja word-a da vidis. Raspakujes .docx fajl kao da je zip (sto i jeste), dobices neke fajlove i foldere. U folderu docProps izmedju ostalog imas app.xml i u njemu imas Pages gde ti pise koliko je stranica i ostala neka statistika. Delphi kod je duzi ali si nezavistan od instalacije word-a na racunaru. Mislim da je ovako mnogo brze ako ti je bitna brzina, jedina mana je sta ako MS nekad resi da promeni format docx fajla tj. xml-ovi u njemu nisu isti...
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Delphi - word, broj stranica

[ Pregleda: 1044 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.