sample\iron\sample_pdf.hsp » Plain Format
;============================================================
; sample_pdf.hsp — hsppdf.dll (PDFium) デモ
;
; - PDF ファイルをロード
; - ページ数と /Title /Author を表示
; - 1 ページ目をカレント window に描画
; - 1 ページ目のテキストを抽出して表示
;
; 事前準備:
; 1. bblanchon/pdfium-binaries prebuilt を plugins/win32/hsppdf/third_party/pdfium/
; に配置 (README.md 参照)
; 2. hsppdf.dll と pdfium.dll をランタイムディレクトリに配置
; 3. 同じディレクトリに sample.pdf を置くか、dialog で指定
;============================================================
#include "hsp3_net_64.as"
#include "iron_pdf.hsp"
title "hsppdf sample"
screen 0, 900, 720
font "MS Gothic", 14
; --- PDFium 初期化 ---
pdf_begin
; --- ファイル選択 ---
path = "sample.pdf"
exist path
if strsize < 0 {
dialog "pdf", 16, "PDF ファイルを選択"
if stat == 0 { dialog "キャンセルされました" : goto *done }
path = refstr
}
; --- ロード ---
pdf_open path
h = stat
if h < 0 {
dialog "PDF を開けません (code=" + h + ")"
goto *done
}
; --- メタデータ ---
pdf_title h : t_title = refstr
pdf_author h : t_author = refstr
n = pdf_pages(h)
; --- 1 ページ目のサイズを points で取得 ---
dim_w = 0.0 : dim_h = 0.0
pdf_size h, 0, dim_w, dim_h
; --- テキスト抽出 (1 ページ目) ---
pdf_text h, 0 : page_text = refstr
; --- 描画 ---
redraw 0
color 255, 255, 255 : boxf
color 0, 0, 0
; 1 ページ目を 1.2 倍で window に描画
pdf_draw h, 0, 1.2
; 上に情報オーバーレイ
color 255, 255, 240 : boxf 0, 0, 900, 110
color 0, 0, 0
pos 8, 4
mes "file : " + path
mes strf("pages : %d size(pt) : %.1f x %.1f", n, dim_w, dim_h)
mes "title : " + t_title
mes "author : " + t_author
mes "-- page 1 text (先頭 400 文字) --"
mes strmid(page_text, 0, 400)
redraw 1
*done
; ユーザが閉じるまで待つ
stop
; ============================================================
; 応用 (コメントのみ): iron_ai と組み合わせた PDF 要約
; ============================================================
; #include "iron_ai.hsp"
; #include "iron_pdf.hsp"
;
; pdf_begin
; pdf_open "report.pdf" : h = stat
; n = pdf_pages(h)
;
; sdim body, 2*1024*1024 ; 2 MB バッファ
; body = ""
; repeat n
; pdf_text h, cnt
; body += refstr + "\n\n"
; loop
; pdf_shut h
; pdf_end
;
; ai_open "gpt-4o-mini"
; prompt = "次の PDF を日本語で 300 字以内で要約してください:\n\n" + body
; ai_chat prompt
; mes refstr