AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

PDF-Dokumente aus Delphi drucken

Ein Thema von Grim Fandango · begonnen am 20. Jul 2003 · letzter Beitrag vom 8. Jul 2020
Antwort Antwort
Seite 3 von 3     123   
skorsi

Registriert seit: 8. Jan 2003
Ort: Bayern
13 Beiträge
 
#21

Re: PDF-Dokumente aus Delphi drucken

  Alt 9. Mär 2004, 10:26
Hallo,

kann man diese PDF Dokumente auch ausdrucken ohne sie öffnen zu müssen??

Danke, skorsi
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#22

Re: PDF-Dokumente aus Delphi drucken

  Alt 12. Jun 2004, 23:02
Ich will mich mal hier dranhängen. Ich versuche auch ein PDF mit dem ActiveX Control auszudrucken. Klappt eigentlich ganz gut, nun ja mehr schlecht als recht. Nur wenn ich es aus einem Thread versuche bekomme ich folgende fehlermeldung zu sehen:
Zitat:
---------------------------
Acrobat plug-in.
---------------------------
Could not find Acrobat External Window Handler.
---------------------------
OK
---------------------------
Gebe ich zusätzlich vorher als src die Datei an bevor ich sie lade, dann kommt keine Fehlermeldung aber es tut sich nichts.

In einem Demo projekt hab eich es ohne Thread probiert, da geht es. Ich poste hie rmal meinen Code:
Thread:
Delphi-Quellcode:
function Thread(p: Pointer): Integer;
var
  Loop: Cardinal;
  MemStream: TMemoryStream;
  URL: string;
  PN: string;
  StartPage, MaxPages: Cardinal;
  SB: TStatusbar;
  IdHTTP: TIdHTTP;
  FileExt: string;
  PDF: TPdf;
  bPrint: Boolean;
  Dir: string;
  btnDownload, btnCancel: TButton;
  Filename: String;
begin
  Result := 0;
  Loop := 0;
  URL := PThreadParams(p)^.URL;
  PN := PThreadparams(p)^.PN;
  StartPage := PThreadParams(p)^.StartPage;
  MaxPages := PThreadParams(p)^.MaxPages;
  SB := PThreadParams(p)^.SB;
  IdHTTP := PThreadParams(p)^.IdHTTP;
  FileExt := PThreadParams(p)^.FileExt;
  Pdf := PThreadParams(p)^.PDF;
  bPrint := PThreadParams(p)^.bPrint;
  Dir := PThreadParams(p)^.Dir;
  btnDownload := PThreadParams(p)^.btnDownload;
  btnCancel := PThreadParams(p)^.btnCancel;
  Filename := Dir + PN + '_' + IntToStr(Loop) + '.' + FileExt;
  for Loop := StartPage to MaxPages do
  begin
    if bCancel = 1 then
      break;
    MemStream := TMemoryStream.Create;
    try
      SB.Panels[0].Text := 'Seite: ' + IntToStr(Loop);
      SB.Refresh;
      try
        IdHTTP.Get(URL + IntToStr(Loop), MemStream);
      except
        on E: Exception do
        begin
          Messagebox(0, Pointer(e.Message), APPNAME, MB_ICONSTOP);
          break;
        end;
      end;
      MemStream.SaveToFile(Filename);
    finally
      FreeAndNil(MemStream);
    end;
    if bPrint then
    begin
      //Form1.Pdf1.src := Filename;
      Form1.Pdf1.LoadFile(Filename);
      //PDF.printWithDialog;
    end;
  end;
  SB.Panels[0].Text := 'Seiten:';
  SB.Panels[1].Text := 'Fortschritt:';
  btnDownload.Enabled := True;
  btnCancel.Enabled := False;
  FreeMem(p, sizeof(TThreadParams));
end;
Start des Thread:
Delphi-Quellcode:
procedure TForm1.DownloadEspacenet;
var
  URL: string;
  ThreadParams: PThreadParams;
  hThread: THandle;
  ThreadID: Cardinal;
begin
  GetMem(ThreadParams, sizeof(TThreadParams));
  if Assigned(ThreadParams) then
  begin
    URL := ESPACENETURL + '?PN=' + edtPN.Text + '&ID=' + edtID.Text + '&PG=';
    ThreadParams.URL := URL;
    ThreadParams.PN := edtPN.Text;
    ThreadParams.StartPage := StrToInt(edtPagesStart.Text);
    ThreadParams.MaxPages := StrToInt(edtPages.Text);
    ThreadParams.SB := Statusbar1;
    ThreadParams.IdHTTP := IdHTTP1;
    ThreadParams.FileExt := 'pdf';
    ThreadParams.Dir := edtDir.Text;
    ThreadParams.btnDownload := btnDownload;
    ThreadParams.btnCancel := btnCancel;
    ThreadParams.PDF := PDF1;
    ThreadParams.bPrint := chkPrint.Checked;
    hThread := BeginThread(nil, 0, Thread, ThreadParams, 0, ThreadID);
    if hThread <> 0 then
    begin
      btnDownload.Enabled := False;
      btnCancel.Enabled := True;
    end;
  end;
end;
Ach so und noch was: printAll oder nur Print geht auch nicht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#23

Re: PDF-Dokumente aus Delphi drucken

  Alt 12. Jun 2004, 23:17
Ich noch mal. Qick and dirty Lösung:
ShellExecute(0, 'open', 'acrord32', PChar('/p /h ' + Filename), nil, SW_HIDE);
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Thomas Feichtner

Registriert seit: 30. Nov 2007
Ort: Rum
137 Beiträge
 
Delphi 10.4 Sydney
 
#24

AW: PDF-Dokumente aus Delphi drucken

  Alt 7. Jul 2020, 15:38
Hallo, ich zeige mir die PDF-Dateien über ActiveX an. Das funktioniert soweit auch.
Jedoch funktioniert hier das Drucken nicht. Der Button ist Enabled.

Ich verwende derzeit den Acrobat Reader DC 2020.009.20074 Mit einer alten Version funktioniert das Drucken ebenfalls.

Rein über den Acrobat Reader funktioniert der Druck-Button.
mfg

Thomas Feichtner
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#25

AW: PDF-Dokumente aus Delphi drucken

  Alt 7. Jul 2020, 16:00
DevExpress hat auch eine PDF-Komponente, die kann man zur Anzeige verwenden und deren TPdfDocument auch auch einzeln intern zum Drucken.

Sowie zum Bearbeiten von PDFs.
https://docs.devexpress.com/OfficeFi...f-document-api


Die setzen wir inzwischen vermehrt ein (seitdem sie auch bissl scheller wurde),
da es immer wieder Probleme mit Acrobat bei den Kunden gab,
womit es somit keine externen Abhängigkeiten mehr gibt, die urplötzlich kaputt gehn können.

aber Achtung
* es wird nicht alles Unterstützt, was der Acrobat kann
* und es ist auch "bissl" langsamer, beim Laden und Anzeigen/Verarbeiten von PDFs
* aber da wird ständig dran weiterentwickelt und es bessert sich

z.B. nervt es auch ständig, dass ständig die SideBar von Acrobat auftaucht (weil da mal wieder dran rumgepfuscht wurde), wenn wir PDFs eingebettet als Vorschau anzeigen wollen
und auch im Konflikt mit MS Office gab es schon Probleme, sodass die Anzeige des Acrobat nicht funktionierte.

Wenn man da dann das Drucken vom DevExpress über Delphis TPrinter vornimmt, dann hat man auch sämtliche Freiheiten, was z.B. Papierformat, Ausrichtung und Druckerschacht betrifft.



Ansonsten wäre meine Idee mal zu schauen wie man PDF.js im Delphi nutzen kann,
als quelloffene Alternative zum Acrobat, ohne pervese Programminstallationen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 7. Jul 2020 um 16:09 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#26

AW: PDF-Dokumente aus Delphi drucken

  Alt 7. Jul 2020, 16:22
Hallo, ich zeige mir die PDF-Dateien über ActiveX an. Das funktioniert soweit auch.
Das Funktioniert noch - Glück gehabt. Adobe garantiert nur entweder den direkten Start oder Anzeige im IE

Jedoch funktioniert hier das Drucken nicht. Der Button ist Enabled.
Ich verwende derzeit den Acrobat Reader DC 2020.009.20074 Mit einer alten Version funktioniert das Drucken ebenfalls.
Wie oben geschrieben. Die Nutzung des Reader über ActiveX ist Adobe sch*** egal.
Wenn was nicht geht, dann geht es halt nicht. Mussten schon bei Adobe einige "broken Features" miterleben


Alternative sind
- Lade das PDF im TWebbrowser und steuere den Druck über die API an (OLECMDID_PRINT)
- Lade das PDF im Chromium(CEF4) und Drucke darüber
- Lade das PDF über Edge Chromium (D10.4 nötig) und Drucke darüber
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
589 Beiträge
 
Delphi XE6 Enterprise
 
#27

AW: PDF-Dokumente aus Delphi drucken

  Alt 8. Jul 2020, 10:16
In einem der Firebird-Seminare (vom 5.6.20; etwa ab 01:27:00) von Holger Klemt wurde gezeigt, wie man den Standalone PDF Viewer "Sumatra PDF" in Delphi- und Lazarus-Programme einbettet: Indem man ihn mit Parameter "-plugin" aufruft und das Handle eines TPanels übergibt, auf dem der Viewer dann angezeigt wird.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz