Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Acrobat activex 32bit / 64bit (https://www.delphipraxis.net/191912-acrobat-activex-32bit-64bit.html)

peberhardt 2. Mär 2017 17:57

Acrobat activex 32bit / 64bit
 
Hallo,

ich hab ein kleines problem, hoffe ihr könnt mir helfen.
Ich belästige Google bereits seid über einer Woche, und bekomme keine Lösung.

ich habe unter Win7 32bit Delphi 2007 eine Anwendung erstellt.
diese beinhaltet die ActiveX Komponente AcroPDF1

ich möchte per code den zoom einstellen und in einer schleife nach rechts und nach unten scrollen.

dieser Befehl:
Code:
AcroPDF1.setZoomScroll(200, 100, 100);
zoomt auf 200% und verschiebt das PDF um 100 nach rechts und 100 nach unten.

wenn ich die Anwendung unter win7 32bit starte funktioniert das auch problemlos.

Aber: wenn ich das Programm unter Win7 oder Win10 64bit laufenlasse, geht der Zoom, das nach unten scrollen auch noch, aber NICHT das nach rechts scrollen.

Wahrscheinlich liegt das an der ActiveX die ja unter 32bit eingerichtet wurde.
die unterscheidet sich offensichtlich von der 64bit variante. ( die Acrobatreader versionen sind gleich )

Warum ich das mache: ich habe große PDF Dateien ( grösser A0 ) und die brauch ich als jpg.
Photoshop rendert da über 4 Std. bei 300 dpi ( die Auflösung brauch ich da da vieles sehr klein ist.
nun möchte ich mit meine Programm den zoom auf 200 stellen und das was im Form angezeigt wird per screenshot automatisch gespeichert
per code verschiebe ich das PDF dann um eine seitenbreite und das Programm macht erneut einen Screenshot.
am Schluss wird das mit der Komponente Imageen zusammengesetzt und ich kann über einen Imageen Layer Anmerkungen auf den Plan zeichnen


nun meine Fragen:

1. könnte das mal einer auf einen 64bit System programmieren und schauen ob das dann da geht?
2. vielleicht weiß einer ja wie man das Problem in den Griff bekommt.

besten Dank für euere Mühe

peter

Hobbycoder 2. Mär 2017 18:08

AW: Acrobat activex 32bit / 64bit
 
hast du schon mal versucht, das PDF mit Ghostscript (gswin32.exe) in ein jpg umzuwandeln? Vielleiht geht das um einiges schneller?

mit
Code:
gswin32c.exe -sDEVICE=jpeg -dNOPAUSE -sPAPERSIZE=a4 -dLastPage=99 -r300 -g1738x2458 -dPDFFitPage -dBATCH -sOutputFile=%outfile% %infile%
funktioniert das bei A4-Seiten sehr gut und schnell. Mit dem Parameter -g kannst du die Größe des JPG's festlegen und mit -r die DPI.

Danach kannst du das JPG bequem mit Imageen laden.

Das ist zwar nicht die Antwort auf deine Frage, aber vlt. ein guter Workarount, denn das mit dem Acrobat ist ja auch etwas subobtimal.

Gruß Hobbycoder

Dalai 2. Mär 2017 18:23

AW: Acrobat activex 32bit / 64bit
 
Auch wenn das keine Lösung des eigentlichen Problems ist, hilft es dir möglicherweise; man muss ja nicht immer das Rad neu erfinden (manchmal aber schon). PDF-XChange Viewer kann die Seiten von PDFs in beliebige Bildformate umwandeln/speichern: Datei > Export > Als Bild.

Übrigens sind bestimmte Bildformate für bestimmte Bildinhalte mehr oder weniger gut geeignet. Schwarz-Weiß-Zeichnungen würde ich niemals in JPG umwandeln (Artefakte!) sondern immer TIF, PNG oder GIF nutzen. Für viele Farben ist PNG hingegen ungeeignet (wird verdammt groß), JPG ist da deutlich besser. Will sagen: Schau dir deine Bildinhalte genau an und wähle das Bildformat danach aus.

Grüße
Dalai

peberhardt 2. Mär 2017 18:46

AW: Acrobat activex 32bit / 64bit
 
Besten Dank für die Infos,

den PDF-XChange Viewer hab ich grade getestet, rendert schnell, aber selbst bei 300dpi ist das Ergebniss extrem schlecht

GostScript hab ich grad installiert, aber hab noch nicht rausgefunden wie man das Input File übergibt.

wird aber wahrscheinlich lange brauchen wenn es hochauflösend rendert.


meine Idee mit den screenshots ist vielleicht wie von hinten durch den ..... aber wirklich schnell.

>> hoffe es kann jemand für mich das mal mit einen Delphi auf einen Win 64bit kompilieren und testen


mfg
Peter

Dalai 2. Mär 2017 19:01

AW: Acrobat activex 32bit / 64bit
 
Zitat:

Zitat von peberhardt (Beitrag 1363068)
den PDF-XChange Viewer hab ich grade getestet, rendert schnell, aber selbst bei 300dpi ist das Ergebniss extrem schlecht

Dann solltest du mit den Optionen im Exportdialog rumprobieren, allen voran mit der JPEG-Qualitätsstufe.

Grüße
Dalai

Hobbycoder 3. Mär 2017 07:25

AW: Acrobat activex 32bit / 64bit
 
Zitat:

Zitat von peberhardt (Beitrag 1363068)
Besten Dank für die Infos,

den PDF-XChange Viewer hab ich grade getestet, rendert schnell, aber selbst bei 300dpi ist das Ergebniss extrem schlecht

GostScript hab ich grad installiert, aber hab noch nicht rausgefunden wie man das Input File übergibt.

wird aber wahrscheinlich lange brauchen wenn es hochauflösend rendert.


meine Idee mit den screenshots ist vielleicht wie von hinten durch den ..... aber wirklich schnell.

>> hoffe es kann jemand für mich das mal mit einen Delphi auf einen Win 64bit kompilieren und testen


mfg
Peter

Hatte ich dir doch schon geschrieben.
Code:
gswin32c.exe -sDEVICE=jpeg -dNOPAUSE -sPAPERSIZE=a4 -dLastPage=99 -r300 -g1738x2458 -dPDFFitPage -dBATCH -sOutputFile=%outfile% %infile%
Du brauchst doch nur noch die Platzhalter %outfile% und %infile% gegen deine passenden Files auszutauschen und Papersize bzw. Auflösung anzupassen.
Leider habe ich keine so großen Dateien, sonst würde ich das glatt mal ausprobieren. Aber Ghostscript ist nicht wirklich langsam.
Könntest du eine diese Dateien zur Verfügung stellen? Ist ja egal was drauf ist, uns wenn's nur Mickeymäuse sind.

Gruß Hobbycoder

peberhardt 3. Mär 2017 11:40

AW: Acrobat activex 32bit / 64bit
 
Hallo,

Gostscript geht erstmal, kann ich aus meinen Programm raus mit den Parametern aufrufen,
da kommt zwar das command Fenster hoch ( vielleicht weiß einer wie man das unterdrücken kann ) aber es funktioniert
sogar sehr schnell.

4-5 Min.

Besten Dank erstmal.

Dennoch: wenn einer die 32bit / 64bit Problematik lösen kann, ich kanns immer noch gebrauchen.

PS. hab den letzten Parameter zu schnell überlesen inifile stat In File..... :-(

mfg
Peter

Hobbycoder 3. Mär 2017 13:32

AW: Acrobat activex 32bit / 64bit
 
Also ich rufe das mit ShellExecute auf, und da gibt's den Parameter SW_HIDE.
Da kommt kein command fenster.

Delphi-Quellcode:
ShellExecute(self.Handle, 'open', PChar(Settings.gs), PChar(param), nil, SW_HIDE);
In Settings.gs befindet sich nur die gswin32.exe (incl. Pfad)
und in param alle zu übergebenden Parameter.

Komplett schaut's dann so aus:
Delphi-Quellcode:
procedure Tfrm_main.ConvertPDF2JPG(iFile, oFile, oSTDOUT: string);
var
  param: string;
begin
  param:=Settings.gsParamsJPG;
  param:=StringReplace(param, '%infile%', iFile, [rfIgnoreCase]);
  param:=StringReplace(param, '%outfile%', oFile, [rfIgnoreCase]);
  param:=StringReplace(param, '%sstdout%', oSTDOUT, [rfIgnoreCase]);
  ShellExecute(self.Handle, 'open', PChar(Settings.gs), PChar(param), nil, SW_HIDE);
  // ShellExecute_AndWait(Settings.gs, param, '', SW_HIDE);
end;
Ich nutze nur ShellExecute_AndWait, weil es mit A4-Seiten sehr schnell geht und ich direkt mit dem Ergebnis weiterarbeiten will.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:58 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