In a very simple Delphi program that holds an instance of TAcroPDF, if I set the .src property to a file, all is well and the pdf displays in my application.
Â
However if I call any procedure on the ActiveX control (I've tried LoadFile, Print, PrintWithDialog, GotoNextPage, GotoPreviousPage) then the application crashes after closing. This even happens if I call a procedure without loading a file. And calling Free() on the ActiveX control also throws an exception
Â
The program code hasn't changed. The only difference is installing Adobe Reader DC ActiveX (version X and XI worked fine for years). I have tested this on another computer to confirm. As soon as Adobe Reader DC is installed, the problem starts.
Â
The error is:
Exception EAccessViolation in module xxx.exe at 51F04CE6.
Access violation at address 51F05CE6. Read of address 51F05CE6.
Â
Code below:
Â
Â
unit Unit1;
Â
Â
interface
Â
Â
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, OleCtrlsAdobe, AcroPDFLib_TLB;
Â
Â
type
 TForm1 = class(TForm)
   AcroPDF1: TAcroPDF;
   btnLoadFile: TButton;
   btnPrint: TButton;
   btnPrintDialog: TButton;
   btnNext: TButton;
   btnPrev: TButton;
   btnSetSrc: TButton;
   btnExit: TButton;
   procedure btnLoadFileClick(Sender: TObject);
   procedure btnPrintClick(Sender: TObject);
   procedure btnPrintDialogClick(Sender: TObject);
   procedure btnNextClick(Sender: TObject);
   procedure btnPrevClick(Sender: TObject);
   procedure btnSetSrcClick(Sender: TObject);
   procedure btnExitClick(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;
Â
Â
var
 Form1: TForm1;
Â
Â
implementation
Â
Â
{$R *.dfm}
Â
Â
procedure TForm1.btnLoadFileClick(Sender: TObject);
begin
  AcroPDF1.LoadFile('<filename goes here>'); // exception on close
  AcroPDF1.Setfocus;
end;
Â
Â
procedure TForm1.btnPrintClick(Sender: TObject);
begin
  AcroPDF1.Print; // exception on close
end;
Â
Â
procedure TForm1.btnPrintDialogClick(Sender: TObject);
begin
  AcroPDF1.PrintWithDialog; // exception on close
end;
Â
Â
procedure TForm1.btnNextClick(Sender: TObject);
begin
  AcroPDF1.gotoNextPage; // exception on close
end;
Â
Â
procedure TForm1.btnPrevClick(Sender: TObject);
begin
  AcroPDF1.gotoPreviousPage; // exception on close
end;
Â
Â
procedure TForm1.btnSetSrcClick(Sender: TObject);
begin
  AcroPDF1.src := '<filename goes here>'; // no exception
  AcroPDF1.Setfocus;
end;
Â
Â
procedure TForm1.btnExitClick(Sender: TObject);
begin
  AcroPDF1.src := '';
  //FreeAndNil(AcroPDF1); // immediate exception
  //AcroPDF1.Free; // immediate exception
Â
Â
  Close;
end;
Â
Â
end.
Â
Â
/////////////////////////////////////////////////////////////
Â
object Form1: TForm1
 Left = 0
 Top = 0
 Caption = 'Form1'
 ClientHeight = 300
 ClientWidth = 635
 Color = clBtnFace
 Font.Charset = DEFAULT_CHARSET
 Font.Color = clWindowText
 Font.Height = -11
 Font.Name = 'Tahoma'
 Font.Style = []
 OldCreateOrder = False
 DesignSize = (
   635
   300)
 PixelsPerInch = 96
 TextHeight = 13
 object AcroPDF1: TAcroPDF
   Left = 8
   Top = 100
   Width = 619
   Height = 192
   Anchors = [akLeft, akTop, akRight, akBottom]
   TabOrder = 6
   ControlData = {000C0000FA3F0000D8130000}
 end
 object btnLoadFile: TButton
   Left = 16
   Top = 8
   Width = 75
   Height = 25
   Caption = 'LoadFile'
   TabOrder = 0
   OnClick = btnLoadFileClick
 end
 object btnPrint: TButton
   Left = 16
   Top = 39
   Width = 75
   Height = 25
   Caption = 'Print'
   TabOrder = 2
   OnClick = btnPrintClick
 end
 object btnPrintDialog: TButton
   Left = 97
   Top = 39
   Width = 75
   Height = 25
   Caption = 'Print Dialog'
   TabOrder = 3
   OnClick = btnPrintDialogClick
 end
 object btnNext: TButton
   Left = 340
   Top = 32
   Width = 75
   Height = 25
   Caption = 'Next'
   TabOrder = 5
   OnClick = btnNextClick
 end
 object btnPrev: TButton
   Left = 259
   Top = 32
   Width = 75
   Height = 25
   Caption = 'Prev'
   TabOrder = 4
   OnClick = btnPrevClick
 end
 object btnSetSrc: TButton
   Left = 97
   Top = 8
   Width = 75
   Height = 25
   Caption = 'Set Src (Ok)'
   TabOrder = 1
   OnClick = btnSetSrcClick
 end
 object btnExit: TButton
   Left = 552
   Top = 8
   Width = 75
   Height = 25
   Caption = 'Exit'
   TabOrder = 7
   OnClick = btnExitClick
 end
end