PDF belgenin toplam sayfa sayısı nasıl bulunur??? [Çözüldü]

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
underwater
Üye
Mesajlar: 86
Kayıt: 27 May 2014 04:27

PDF belgenin toplam sayfa sayısı nasıl bulunur??? [Çözüldü]

Mesaj gönderen underwater »

Arkadaşlar merhaba;

Internette çok araştırdım fakat sonuç alamadım.
PDF belgenin toplam sayfa sayısını nasıl alabilirim?
Delphi 7 kullanıyorum.
En son underwater tarafından 04 Eki 2016 05:10 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
ertank
Kıdemli Üye
Mesajlar: 1657
Kayıt: 12 Eyl 2015 12:45

Re: PDF belgenin toplam sayfa sayısı nasıl bulunur???

Mesaj gönderen ertank »

underwater yazdı:Arkadaşlar merhaba;

Internette çok araştırdım fakat sonuç alamadım.
PDF belgenin toplam sayfa sayısını nasıl alabilirim?
Delphi 7 kullanıyorum.
Merhaba,

Delphi ile PDF dosyalarını okumak için kullanılabilecek birçok bileşen vardır. Bunlar ek dosya gerektirmeyen bileşenler olabilir. Veya Adobe firmasının ActiveX bileşenini kullanıyor olabilirsiniz. Ayrıca siz bunlardan birini kullanmayıp kendiniz kod yazarak ta PDF dosyasını okuyor olabilirsiniz. Bu noktada PDF dosyasını nasıl okuduğunuzu biz bilmiyoruz. Eğer biraz daha detaylı bilgi verebilirseniz ve mümkünse kod paylaşabilirseniz daha fazla yardımcı olmamız mümkün olabilir.
underwater
Üye
Mesajlar: 86
Kayıt: 27 May 2014 04:27

Re: PDF belgenin toplam sayfa sayısı nasıl bulunur???

Mesaj gönderen underwater »

Öncellikle cevap için teşekkür ederim.
Aslında pdf i direkt okumuyorum.Kullandığım özel bir bileşen yok.
PDF belgesini SQL server üzerindeki image tipli alana kaydediyorum.
Kaydederken sayfa sayısınıda bulmam gerekiyor.

Adobe AcroPDF bileşenini Delphi 7 ye import ettim fakat bu bileşenle sayfa sayısına ulaşamadım. Yada ben berceremedim.
Kullanıcı avatarı
kimimben
Üye
Mesajlar: 129
Kayıt: 28 Oca 2016 04:41
Konum: İstanbul

Re: PDF belgenin toplam sayfa sayısı nasıl bulunur???

Mesaj gönderen kimimben »

underwater
Üye
Mesajlar: 86
Kayıt: 27 May 2014 04:27

Re: PDF belgenin toplam sayfa sayısı nasıl bulunur???

Mesaj gönderen underwater »

bunu bende gördüm fakat kodu kullanamadım.
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Re: PDF belgenin toplam sayfa sayısı nasıl bulunur???

Mesaj gönderen xozcanx »

Merhaba,
öncelikle bu işlem için elindeki Acrobat Reader sürümünün Tam sürüm olması lazım aksi takdirde işe yaramıyor malesef.

Kod: Tümünü seç

Uses 
	ComObj, ActiveX;
	.
	.
	
  private
    function IsOLEObjectInstalled(Name: String): Boolean;
.
.

function TForm1.IsOLEObjectInstalled(Name: String): Boolean;
var
  ClassID: TCLSID;
  Rez: HRESULT;
begin
  Rez := CLSIDFromProgID(PWideChar(WideString(Name)), ClassID);
  Result := (Rez = S_OK);
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  PDF_Dosya: OleVariant;
  SayfaSayisi: Integer;
begin
  if OpenDialog1.Execute then
  Begin
    Try if IsOLEObjectInstalled('AcroExch.PDDoc') then
      PDF_Dosya := CreateOleObject('AcroExch.PDDoc');
    except
     ShowMessage('AcroExch.PDDoc Bulunamadı!')
    end;
    Try
      PDF_Dosya.Open(OpenDialog1.FileName);
      Begin
        SayfaSayisi :=PDF_Dosya.GetNumPages;
        ShowMessage('Sayfa Sayısı : '+IntToStr(SayfaSayisi));
      End;
    except

    end;
  End;
end;
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
underwater
Üye
Mesajlar: 86
Kayıt: 27 May 2014 04:27

Re: PDF belgenin toplam sayfa sayısı nasıl bulunur???

Mesaj gönderen underwater »

Tam sürüm clientlarda problem olur.
Yinede teşekkür ederim.

AcroPDF i inceledim. Herşey var pagecount yok .
Aksilik işte
underwater
Üye
Mesajlar: 86
Kayıt: 27 May 2014 04:27

Re: PDF belgenin toplam sayfa sayısı nasıl bulunur???

Mesaj gönderen underwater »

http://www.angusj.com/delphitips/pdfpagecount.php
adresinde pdfpagecount.dll dosyası paylaşılmış.
Bunu Delphi 7 ile nasıl kullanabilirim acaba?
import activex ile olmadı.
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: PDF belgenin toplam sayfa sayısı nasıl bulunur???

Mesaj gönderen mkysoft »

Binary moddda arama yaparak sayfa sayısını bulabilirsiniz. Çok sağlıklı olmayabilir, en azından pdf'i açmak gerekmiyor.

Regex:

Kod: Tümünü seç

/Type\s*/Page($|[^s])
Teknik bilgi:

Pdf içinde sayfa niteleyicileri aşağıdaki gibi olabiliyor:

Kod: Tümünü seç

/Type/Page
/Type /Page
/Type/Page/
ertank
Kıdemli Üye
Mesajlar: 1657
Kayıt: 12 Eyl 2015 12:45

Re: PDF belgenin toplam sayfa sayısı nasıl bulunur???

Mesaj gönderen ertank »

underwater yazdı:http://www.angusj.com/delphitips/pdfpagecount.php
adresinde pdfpagecount.dll dosyası paylaşılmış.
Bunu Delphi 7 ile nasıl kullanabilirim acaba?
import activex ile olmadı.
Merhaba,

Aşağıdaki uygulama ile istediğinizi gerçekletirebilirsiniz.

Form:

Kod: Tümünü seç

object Form1: TForm1
  Left = 192
  Top = 124
  Width = 394
  Height = 189
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Button1: TButton
    Left = 40
    Top = 24
    Width = 129
    Height = 25
    Caption = 'Get Pdf Page Count'
    TabOrder = 0
    OnClick = Button1Click
  end
  object Edit1: TEdit
    Left = 40
    Top = 56
    Width = 273
    Height = 21
    TabOrder = 1
    Text = 'SIC Multiwipe 1.2 Readme.pdf'
  end
end
Kod:

Kod: Tümünü seç

unit uPdfCount;

interface

uses
  Windows, 
  Messages, 
  SysUtils, 
  Variants, 
  Classes, 
  Graphics, 
  Controls, 
  Forms,
  Dialogs, 
  StdCtrls;

  function GetPdfPageCount(FileName: PAnsiChar): Integer; stdcall; external 'pdfpagecount.dll';
  
type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  Count: Integer;
  FullFileName: AnsiString;
begin
  FullFileName := AnsiString(ExtractFilePath(Application.ExeName) + Edit1.Text);
  Count := GetPdfPageCount(Pointer(FullFileName));
  ShowMessage(IntToStr(Count));
end;

end.
underwater
Üye
Mesajlar: 86
Kayıt: 27 May 2014 04:27

Re: PDF belgenin toplam sayfa sayısı nasıl bulunur???

Mesaj gönderen underwater »

ertank çok teşekkür ederim.
Gönderdiğiniz kod ile pdf dokümanın sayfa sayısını alabiliyorum artık.
pdfpagecount.dll dosyasını nasıl kullanacağımı bilmiyordum. Sayenizde öğrendim.

İlgi gösteren diğer arkadaşlara da teşekkürler.
Cevapla