GetPDFInfo

〜解説〜
PDFファイルの文章情報を取得する

〜引数〜
PDF:PDFファイルのハンドル
InfoHeader GetPDFInfoHeader構造体へのアドレス

〜戻り値〜
成功:1 失敗:(-1)

〜備考〜
なし

〜サンプル〜

C/C++

// PDFファイルの情報構造体(取得用)
typedef struct _GETPDFINFOHEADER
{
  char Title[513];    // タイトル
  char Subject[513];  // サブタイトル
  char Author[513];   // 作成者
  char Keywords[513]; // キーワード
  char Creator[513];  // 作成
  char Producer[513]; // PDF変換 
  char CreationDate[21]; // 作成日時
  char ModDate[21];      // 更新日時
} GETPDFINFOHEADER;

typedef  GETPDFINFOHEADER   *PGETPDFINFOHEADER ; 

↑定義部 ----------------------------------

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
                                 LPSTR lpszCmdLine, int nCmdShow)
{   
  HINSTANCE pdftools=NULL; // pdftool.dllのインスタンスハンドル
  pLoadPDF  LoadPDF=NULL;  // LoadPDF API
  pFreePDF  FreePDF=NULL;  // FreePDF API
  pGetPDFInfo  GetPDFInfo=NULL; // GetPDFInfo API
  GETPDFINFOHEADER GPDFH;
  int pdf;

  ZeroMemory(&GPDFH,sizeof(GETPDFINFOHEADER));

  // DLLの読みこみ
  pdftools = LoadLibrary("pdftool.dll");
  if (pdftools!=NULL)
  {  
     //各APIの呼び出し
     LoadPDF = (pLoadPDF)GetProcAddress(pdftools, "LoadPDF"); 
     FreePDF = (pFreePDF)GetProcAddress(pdftools, "FreePDF"); 
     GetPDFInfo = (pGetPDFInfo)GetProcAddress(pdftools, 
                                                 "GetPDFInfo");  
       // PDFファイルを読み込む
       pdf =LoadPDF("c:\\test.pdf");
      
       // 文書情報の取得
       GetPDFInfo(pdf,(PGETPDFINFOHEADER)&GPDFH);
       
       // ここで取得した構造体の情報を利用する
       
       ...

       // ----->
       
       // PDFファイルのハンドルを解放する
       FreePDF(pdf);

      FreeLibrary(pdftools);
   }
   return(0);
}

Delphi

// PDFファイルの情報構造体(取得用)
type
  pGetPDFInfoHeader =^TGetPDFInfoHeader;
  TGeTPDFInfoHeader =packed record
     Title    : array [0..512]of char; // タイトル
     Subject  : array [0..512]of char; // サブタイトル
     Author   : array [0..512]of char; // 作成者
     Keywords : array [0..512]of char; // キーワード
     Creator  : array [0..512]of char; // 作成
     Producer : array [0..512]of char; // PDF変換
     CreationDate : array [0..20]of char;  // 作成日時
     ModDate      : array [0..20]of char;  // 更新日時
end;

↑定義部 ----------------------------------

procedure TForm1.Button1Click(Sender: TObject);
var
 pdf,cnt: integer;
 PDFInfoHeader :TGetPDFInfoHeader;
begin
  // 構造体の初期化
  ZeroMemory(@PDFInfoHeader,sizeof(TGetPDFInfoHeader));
  if OpenDialog1.Execute then
  begin
     pdf:=LoadPDF(pchar(OpenDialog1.filename));
       // 文書情報の取得
       GetPDFInfo(pdf,@PDFInfoHeader);
       // エディットに情報を設定する
       edit1.text:=  PDFInfoHeader.Title ;
       edit2.text:=  PDFInfoHeader.Subject  ;
       edit3.text:=  PDFInfoHeader.Author   ;
       edit4.text:=  PDFInfoHeader.Keywords ;
       edit5.text:=  PDFInfoHeader.Creator  ;
       edit6.text:=  PDFInfoHeader.Producer  ;
       edit7.text:=  PDFInfoHeader.CreationDate ;
       edit8.text:=  PDFInfoHeader.ModDate  ;   
     freePDF(pdf);
   end;
end;

VB

' PDFファイルの情報構造体(取得用)
Public Type TGetPDFInfoHeader
     Title(512)    As Byte ' タイトル
     Subject(512)  As Byte ' サブタイトル
     Author(512)   As Byte ' 作成者
     Keywords(512) As Byte ' キーワード
     Creator(512)  As Byte ' 作成
     Producer(512) As Byte ' PDF変換
     CreationDate(20) As Byte ' 作成日時
     ModDate(20)      As Byte ' 更新日時
End Type

↑定義部 ----------------------------------

Private Sub Command1_Click()
 Dim pdf As Long
 Dim PDFIH As TGetPDFInfoHeader

 ' 構造体の初期化
 Call ZeroMemory(PDFIH, Len(PDFIH))

 pdf = LoadPDF("c:\\test.pdf")
 
 ' 文書情報の取得
 Call GetPDFInfo(pdf, PDFIH)
    'エディットに情報を設定する
    Text1.Text = StrConv(PDFIH.Title, vbUnicode)
    Text2.Text = StrConv(PDFIH.Subject, vbUnicode)
    Text3.Text = StrConv(PDFIH.Author, vbUnicode)
    Text4.Text = StrConv(PDFIH.Keywords, vbUnicode)
    Text5.Text = StrConv(PDFIH.Creator, vbUnicode)
    Text6.Text = StrConv(PDFIH.Producer, vbUnicode)
    Text7.Text = StrConv(PDFIH.CreationDate, vbUnicode)
    Text8.Text = StrConv(PDFIH.ModDate, vbUnicode)
  FreePDF (pdf)
End Sub



ホーム