AGB  ·  Datenschutz  ·  Impressum  







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

Und ewig grüsst das PDF...

Ein Thema von Delbor · begonnen am 8. Okt 2018 · letzter Beitrag vom 8. Okt 2018
Antwort Antwort
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#1

Und ewig grüsst das PDF...

  Alt 8. Okt 2018, 15:53
Hi Zusammen
Nach etlichen Versuchen mit diversen Engines bin ich jetzt wieder bei der Fernsteuerung des PDFCreators gelandet - allerdings benuze ich jetzt - anders als hier die beim Import automatisch generierten Komponenten-Wrapper.

Aberr auch da steh ich schon wieder auf dem Schlauch...
Bislang habe ich in einem Frame folgendes:
Delphi-Quellcode:
type
  TPDFCreatorFrame = class(TFrame)
    PdfCreatorObj1: TPdfCreatorObj;
    OutputFiles1: TOutputFiles;
    Printers1: TPrinters;
    PrintJob1: TPrintJob;
    PrintJobInfo1: TPrintJobInfo;
    Queue1: TQueue;
  private
   { Private-Deklarationen }
   FInputFileName: String;
   FOutputFileName :String;
   FFileName : WideString;

   procedure ImageToPDF;

  public
    { Public-Deklarationen }
    Property InputFile: String read FInputFileName write FInputFileName;
    Property OutputFleName : String read FOutputFileName write FOutputFileName;
  end;
Soweit mal der Aufbau des Frames mit allen importierten Wrappern. In einer ersten Prozedur versuche ich nun ein PDF zu erzeugen - die Zeile, in der abgebrochen wird, ist markiert und mit der Fehlermeldung ergänzt:

Delphi-Quellcode:
procedure TPDFCreatorFrame.ImageToPDF;
begin
  Showmessage('Initializing PDFCreator queue...');
  Queue1.Initialize;
  Showmessage('Setting up target path to: ' + Self.FFileName);
  Showmessage('Printing one windows test page...');
  if not Self.Queue1.WaitForJob(10)then
    Showmessage('The print job did not reach the queue within ' + IntToStr(10) + ' seconds')
  else
    Showmessage('Currently there are ' + IntToStr(Queue1.Count) + ' job(s) in the queue');
  Showmessage('Getting job instance');
  PrintJob1 := Queue1.NextJob; //<==[dcc32 Fehler] PDFCreatorFrameUnit.pas(70): E2010 Inkompatible Typen: 'TPrintJob' und 'IPrintJob'
  Self.PrintJob1.SetProfileByGuid('DefaultGuid');
  Showmessage('Converting under \"DefaultGuid\" conversion profile');
  Self.PrintJob1.ConvertTo(FFileName);
  if not Self.PrintJob1.IsSuccessful and not Self.PrintJob1.IsFinished then
    Showmessage('Could not convert the file: ' + FFileName)
  else
    Showmessage('Job finished successfully');
  Queue1.ReleaseCom;

end;
Die entsprechenden Zeilen in dem Beispielscript:
Delphi-Quellcode:
//   var job = PDFCreatorQueue.NextJob;
//
//   //Alternative: job.SetProfileByName("DefaultGuid");
//   //For converting to other formats than pdf set here the appropriate conversion profile
//   job.SetProfileByGuid("DefaultGuid");
Was mache ich falsch?

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
930 Beiträge
 
#2

AW: Und ewig grüsst das PDF...

  Alt 8. Okt 2018, 16:26
Woher stammt der Type TPrintJob?

Möglicherweise gibt es noch irgendwo eine Typ TPrintJob.

Überprüf mal, ob ein Type TPrintJob noch über eine andere Unit definiert ist, welche du im Suchpfad hast. Gleiches Problem hatte ich erst vor einigen Tagen mit einer Twainkomponente.
Wenn der Compiler den Type zuerst findet, nimmt er den, und schon passt der Type nicht mehr.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.

Geändert von Hobbycoder ( 8. Okt 2018 um 16:29 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Und ewig grüsst das PDF...

  Alt 8. Okt 2018, 16:55
Hallo,
steht doch da Inkompatible Typen: 'TPrintJob' und 'IPrintJob
T<>I

Du musst bei Deiner Variable oben wohl auch IPrintJob statt TPrintJob nehmen.

Vielleicht hilft auch ein
UnitName.TPrintJob (jetzt wieder mit T)
wobei UnitName der Name der TLB (?) des PDFCreators ist.
Heiko
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Und ewig grüsst das PDF...

  Alt 8. Okt 2018, 17:39
Hi Hobbycoder

In diesem Thread hab ich in Beitrag 7 mal die fragliche TLB hochgeladen - da ist

Ich hab soeben entdeckt, dass zwischen der damals hochgeladenen Tlb und der heutigen ein Unterschied besteht. Da ich jetzt Komponenten-Wrapper verwende, sind in der Tlb Klassen für diese Wraapper deklariert. Da sich die Ubits unterscheiden, lade ich die aktuelle nochmal hoch.
PDFCreator_COM_TLB.pas
Zitat:
Du musst bei Deiner Variable oben wohl auch IPrintJob statt TPrintJob nehmen.
Wär unter 'normalen Umständen' wohl mein erster Gedanke. (ZB bei sowas wie TStrings vs. String). Aber hier geht es (zumindest nach meinem bisherigen Verständnis) um eine Klasse, die eben genau diese Schnittstelle repräsentiert.

Ich habs auch schon mit
PrintJob1.DefaultInterface := Queue1.NextJob; versucht. Defaultinterface ist zwar vom Typ IPrintJob, aber leider ReadOnly.

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Antwort Antwort


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 12: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