Autor Beitrag
M. Raab
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 334
Erhaltene Danke: 1

WIN 7
Delphi XE
BeitragVerfasst: Do 27.12.07 12:11 
Hallo NG,


ich habe folgendes Problem mit ADOBE Prof 8.1.1: aus meinem Programm heraus rufe ich den ADOBE Drucker auf und möchte auf den ADOBE Drucker drucken. Der Adobe PDF Drucker wird in Windows angezeigt und es lässt sich von z.B. WORD heraus auch darauf drucken bzw. ein PDF File erzeugen.

In meinem Programm lasse ich den Nutzer wählen, welchen Drucker er nutzen will. Dies geschieht über eine COMBO Box wie folgt:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm2.FormCreate(Sender: TObject);
begin
  form2.combobox1.Items.Clear;
  form2.combobox1.items:=printer.printers;
  form2.combobox1.itemindex:=printer.printerindex;
  printername:=printer.printerindex;
end;


Nachdem man den Drucker ausgewählt hat, starte ich den Druck wie folgt:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
       //////////////////////////////////////////////////////////////////

       printer.printerindex:=druckerindex;

       printer.begindoc;

       with printer.canvas do begin

       outDC:=printer.canvas.Handle;
       setmapmode(Outdc,mm_lometric);
       GetWindowextex(outdc,w);
       getviewportextex(outdc,v);
       setmapmode(outdc,mm_anisotropic);
       setwindowextex(outdc,w.cx,w.cy,nil);
       setviewportextex(outdc,v.cx,-v.cy,nil);
       ....


Nun kommt sofort eine Fehlermeldung: ADOBE PDF: Der Druckbefehlt ist unzulässig.

Bisher habe ich freie PDF Drucker verwendet: FreePDF o.ä. Da hat es geklappt - nun geht das nicht mehr.

Kann mir jemand helfen ?


Gruss


Markus

_________________
Das Leben besteht aus Bits und Bytes - nur: wo laufen sie denn ????
Super ... Du kannst das zwar lesen, toll..... aber: völlig zwecklos !!!
Reinhard Kern
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 591
Erhaltene Danke: 14



BeitragVerfasst: Do 27.12.07 19:46 
user profile iconM. Raab hat folgendes geschrieben:
Hallo NG,...
Nun kommt sofort eine Fehlermeldung: ADOBE PDF: Der Druckbefehlt ist unzulässig.
Markus


Hallo,

naheliegend: im Einzelschritt durchgehen, welchen Druckbefehl der Drucker nicht mag, oder den Druck Schritt für Schritt aufbauen (z.B. einen Exit-Befehl reinsetzen). Ich würde drauf tippen, dass er vielleicht nicht die "Ex"-Versionen unterstützt. Grundsätzlich unterstützt nicht jeder Druckertreiber jeden Druckbefehl, aber das kann man in den meisten Fällen vorher abfragen.

Gruss Reinhard
M. Raab Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 334
Erhaltene Danke: 1

WIN 7
Delphi XE
BeitragVerfasst: Fr 28.12.07 11:40 
Hallo Reinhard,


ich habe Deinen Rat befolgt und Step by Step ausgeführt: der Fehler kommt bereits in der Zeile:

printer.begindoc


Es kommt dann die Fehlermeldung: ADOBE PDF: Druckbefehl nicht zulässig.


Gruß


Markus

_________________
Das Leben besteht aus Bits und Bytes - nur: wo laufen sie denn ????
Super ... Du kannst das zwar lesen, toll..... aber: völlig zwecklos !!!
Reinhard Kern
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 591
Erhaltene Danke: 14



BeitragVerfasst: Fr 28.12.07 19:56 
user profile iconM. Raab hat folgendes geschrieben:
Hallo Reinhard,


ich habe Deinen Rat befolgt und Step by Step ausgeführt: der Fehler kommt bereits in der Zeile:

printer.begindoc


Es kommt dann die Fehlermeldung: ADOBE PDF: Druckbefehl nicht zulässig.


Gruß


Markus


Hallo,

eine vage Idee dazu: fehlen irgendwelche Rechte im Zielverzeichnis (typisch Vista), gibt es einen "UNEXPECTED_" Error - hab ich mal wo gelesen. Sonst fällt mir nichts dazu ein, ausser das Gleiche unter XP zu testen, bloss um das Problem mal einzugrenzen.

Gruss Reinhard
M. Raab Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 334
Erhaltene Danke: 1

WIN 7
Delphi XE
BeitragVerfasst: Sa 29.12.07 12:02 
Hallo Reinhard,


leider kann ich das nicht unter XP testen - hab keins mehr. Mit den Rechten unter VISTA hat es meiner Meinung nach nichts zu tun. Ich bin als ADMIN angemeldet und die Benutzerkontensteuerung habe ich deaktiviert, da mir das ständige Gefrage auf den Nerv gegangen ist. Sende ich den Druck aber an mein Fax oder an die Mail, klappt das - die Rechte können es also nicht sein. Verwende ich FreePDF klappt es auch - nur eben mit ADOBE nicht. Da der Fehler bereits mit printer.begindoc passiert, kann es auch nicht am ADOBE liegen - der hat ja noch keinen Druckbefehl bekommen.


Gruss


Markus

_________________
Das Leben besteht aus Bits und Bytes - nur: wo laufen sie denn ????
Super ... Du kannst das zwar lesen, toll..... aber: völlig zwecklos !!!
Reinhard Kern
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 591
Erhaltene Danke: 14



BeitragVerfasst: Sa 29.12.07 15:33 
user profile iconM. Raab hat folgendes geschrieben:
.... Da der Fehler bereits mit printer.begindoc passiert, kann es auch nicht am ADOBE liegen - der hat ja noch keinen Druckbefehl bekommen.

Gruss

Markus


Hallo Markus,
das stimmt so nicht, natürlich wird BeginDoc vom Treiber ausgeführt:
Note that you must still call the BeginDoc and EndDoc methods of TPrinter. During the BeginDoc call, the printer driver initializes the printer as necessary, and during the EndDoc call, the printer driver will uninitialize the printer and eject the page.

Also Adobe ist schon dein Partner.

Gruss Reinhard
M. Raab Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 334
Erhaltene Danke: 1

WIN 7
Delphi XE
BeitragVerfasst: Mo 31.12.07 15:15 
Hallo Reinhard,


vielen Dank - also muss ich mich mal an ADOBE wenden. Mit freien PDFs gehts ja ....


Gruss


Markus

_________________
Das Leben besteht aus Bits und Bytes - nur: wo laufen sie denn ????
Super ... Du kannst das zwar lesen, toll..... aber: völlig zwecklos !!!
Bernhard Geyer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 721
Erhaltene Danke: 3



BeitragVerfasst: Mo 31.12.07 16:22 
user profile iconM. Raab hat folgendes geschrieben:
vielen Dank - also muss ich mich mal an ADOBE wenden. Mit freien PDFs gehts ja ....

Darf ich lachen: Hahaha. Solange du keine kostenpflichtige Adobe-Mitgliedschaft hast werden dir dir etwas Husten. Und selbst wenn wird nach Beantwortung der Frage: "Geht es mit Word" und deinem "Ja" ein - "Dann ist es nicht unser Problem kommen". Und falls man doch was entdeckt ist die Antwort auf "Wird es ein Update geben und wann" ein "Es ist nicht Adobes Firmenpolitik sowas bekanntzugeben". Adobe ist nach m.E. der schlimmste SW-Laden aus USA (ok, es gibt noch CA). Arrogant bis zum geht nicht mehr und SW-Qualität - Naja ob man noch von Qualität sprechen kann...

Wenn du ein fertiges Demoprojekt zusammenstellen könntest, kann ichs ja mal nächstes Jahr auf meinem Vista-PC mit Adobe Acrobat 3D Testen. Falls du von Adobe 7 aktualisiert hast würde ich dir raten erst mal alles Adobe Acrobat-Technische zu deinstallieren und dann nur die 8er-Version neu zu installieren.
M. Raab Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 334
Erhaltene Danke: 1

WIN 7
Delphi XE
BeitragVerfasst: Di 01.01.08 15:24 
Hallo Bernhard,


na ja - Mut machst Du einem nicht. Ich habe vorher nur freie PDFs benutzt und dann legal ADOBE 8 Prof. erworben. An der Umstellung Vers. 7 nach Vers. 8 kann es nicht liegen.

Deine Frage zu einer DEMO:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
       
      VAR   w,v         : TSize;
            OUTDC       : HDC;
           druckerindex : integer;
       
       ...............

       printer.printerindex:=druckerindex;  
       printer.begindoc;  
 
       with printer.canvas do begin  
         outDC:=printer.canvas.Handle;  
         setmapmode(Outdc,mm_lometric);  
         GetWindowextex(outdc,w);  
         getviewportextex(outdc,v);  
         setmapmode(outdc,mm_anisotropic);  
         setwindowextex(outdc,w.cx,w.cy,nil);  
         setviewportextex(outdc,v.cx,-v.cy,nil);  
         pen.color:=clred;
         pen.width:=5;
         MoveTo(100,100);
         LineTo(1000,1000);
        

         font.color:=clred;
         font.name:='ARIAL Narrow';
         font.height:=120;
         textout(100,170,'Test');
      endwith;

      printer.enddoc;



Das reicht bereits und führt zu dem beschriebenen Fehler. Wie bereits gesagt: der Fehler kommt wenn ich nur printer.begindoc schreibe.


Gruss und Danke und ein GUTES NEUES JAHR an ALLE !!


Markus

_________________
Das Leben besteht aus Bits und Bytes - nur: wo laufen sie denn ????
Super ... Du kannst das zwar lesen, toll..... aber: völlig zwecklos !!!