![]() |
Microsoft Word
Da Word keine PDF Export Routine mit anbietet, dachte ich das JPGs / BMPs
ja auch ausreichen um Dokumente für alle lesbar erzeugen zu können. Das klappt auch ganz gut mit:
Delphi-Quellcode:
aber leider nur die erste Seite...
Document.Content.CopyAsPicture;
Dachte dann das geht vielleicht übers Range mit:
Delphi-Quellcode:
aber auch hier kopiert er nur die erste Seite ins ClipBoard.
Document.Range.CopyAsPicture;
Weis jemand wie man alle Seiten kopiert ? euer Andreas |
Re: Microsoft Word
Hallo Andreas,
beim Thema Dokumenten-Management würde ich keinen leichtfertigen Bogen um PDF machen. MS Word - so leid es mir persönlich tut das sagen zu müssen - kann nachgerüstet werden um diese Funktionalität zu bieten. Aber zu deinem konkreten Problem - geht das nicht?
Code:
Kann es leider nicht ausprobieren, da ich vor einer Maschine ohne MS Word sitze, aber wenn es funktioniert, dann müsstest du ja nur noch eine Schleife drum wickeln.
with Document.ActiveWindow.Panes[1].Pages.Item[5].Range do begin
Select; CopyAsPicture; end; Grüße vom marabu |
Re: Microsoft Word
was sind Panes[1] ?
wie so das 5. Item ? von Pages ?
Delphi-Quellcode:
gibts nicht... :wall:
Panes[1].Pages.
PS: Nachricht an die Admins... sorry wollte das hier eigendlich ins API Forum stellen... könnt ihr das verschieben !!! :pale: |
das funzt auch nicht...
jetzt hab ichs mal mit ner anderen Weise probiert:
Delphi-Quellcode:
das geht auch nicht... :roll:
Document.Content.Select;
with WordApplication.Selection do CopyAsPicture; :gruebel: grummel :wall: PS: vielleicht muss ichs ja seitenweise abspeichern... würde ich auch machen doch wie sage ich dann:
Delphi-Quellcode:
Und wie frage ich wieviel Seiten ?
Document.[b]???Seite??[/b].CopyAsPicture
Delphi-Quellcode:
:wall:
Document.[b]Seitenanzahl[/b]
|
Re: Microsoft Word
Du könntest die Überschrift ein bischen genauer fassen, damit aus der hervor geht, um welches Thema es sich handelt.
Danke :) |
Re: Microsoft Word
Zitat:
Besorge dir doch mal die ![]() Grüße vom marabu |
Re: Microsoft Word
Hallo,
hier nun eine mögliche Lösung. Funzt auch soweit. Nur werden Kopf-/Fußzeilen nicht mit gespeichert. Vielleicht geht das auch einfacher aber es funzt.... Aufgerufen wird die funktion z.B. so:
Delphi-Quellcode:
var
WordApplication : TWordApplication; begin WordApplication := TWordApplication.Create(Self); ... SaveDocAsJPG(WordApplication.ActiveDocument, 'C:\');
Delphi-Quellcode:
procedure TForm1.SaveDocAsJPG(Document: _Document; SaveTo: String);
//Bilder werden nummeriert in "SaveTo" abgelegt. Also das erste ist z.B. "C:\1.jpg" wenn SaveTo "C:\" ist var pic: Graphics.TPicture; bmp: Graphics.TBitmap; jpg: jpeg.TJPEGImage; SaveDir: String; curPage, i: Integer; SelStart, SelEnd: OleVariant; begin try pic := TPicture.Create; bmp := Graphics.TBitmap.Create; jpg := TJPEGImage.Create; curPage := 1; SelStart := 0; SaveDir := IncludeTrailingPathDelimiter(SaveTo); try for i := 1 to Document.Sentences.Count do begin if (Document.Sentences.Item(i).Information[wdActiveEndPageNumber] > curPage) OR (i = Document.Sentences.Count) then begin// auch prüfen ob am Ende des Document angekommen! Denn der "Rest" muss auch gespeichert werden SelEnd := Document.Sentences.Item(i).End_;//Ende des aktuellen Satzes Document.Range(SelStart, SelEnd).CopyAsPicture;//Auswahl kopieren. (MetaFile) pic.Assign(Clipboard);// Zwisichenablage dem TPicture zuweisen. //Graphic nach TBitmap convertieren (in DP gefunden) bmp.PixelFormat := pf24bit; bmp.Width := pic.Graphic.Width; bmp.Height := pic.Graphic.Height; bmp.Canvas.Draw(0,0, pic.Graphic); //bmp dem jpg zuweisen und komprimieren und speichern jpg.Assign(bmp); jpg.CompressionQuality := 90; jpg.Compress; jpg.SaveToFile(SaveDir+IntToStr(curPage)+'.jpg'); // bmp.SaveToFile('C:\test'+IntToStr(curPage)+'.bmp');//falls das bmp nötig wär... Inc(curPage);//nächste Seite SelStart := SelEnd;//Auswahlbegin der nächsten Seite ist das Ende der Aktuellen //aufräumen bmp.Dormant; bmp.FreeImage; bmp.ReleaseHandle; end; end; finally pic.Free; bmp.Free; jpg.Free; end; except on e:Exception do begin ShowMessage('Fehler beim Speichern des Worddokument als Bilddatei!'+ #13#10+e.Message+#13#10+e.ClassName) end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz