よろしくお願いします。
早速ですけど、VB.NET(VB6.0でもかまいません)でPDFのサムネール表示をボタン一つで切り替える方法を調べたいです。
PDFを表示する際に、openflgsの値を変えて表示のしかたを変えるのはわかったのですが、表示した後にopenflgsの値の変え方がわかりません。
どなたか教えていただけないでしょうか?
ボタンを押した時に、サムネールを表示させたいんですよね。
今、どのように表示しているのか分かりませんが、
Acrobat.CAcroApp や Acrobat.CAcroAVDoc を使用して表示しているのならば、
Private Sub Command_Click()
'Const PDUseThumbs = 2
AcroAVDoc.SetViewMode(PDUseThumbs)
End Sub
でできますよ。
#AcroAVDoc As Acrobat.CAcroAVDoc
とろさんありがとうございます。
さっそくためしてみたのですが、そうもうまくいきません。ためしに、GetViewModeで値を取得してみたのですが、サムネール表示をしないでファイルを開いたときは、値が1になりSetで変更しても、受け付けてくれない感じです。サムネール表示の切り替えとゆうよりは、画面からサムネールやしおりのタグをとりはずして、ページ単位の表示に切り替えるとゆう感じなのですが。
'Const AV_DOC_VIEW = 4
'Const AV_PAGE_VIEW = 2
今は、ファイルを開くとき、openflgsの値をAV_DOC_VIEWとAV_PAGE_VIEWで変更しています。
わかりましたら、よろしくお願いします。
いまいち、やりたいことが分かりませんが、
今はどのようにしているのかコードを載せてください。
Public AcroExchAVDoc() As Acrobat.CAcroAVDoc
Sub OpenFile()
Dim ok As Object
Dim fIndex As Short
Dim filename as string
fIndex = 1
filename = c:\acrobat\aaa.pdf
'open the selected file
AcroExchAVDoc(fIndex) = CreateObject("AcroExch.AVDoc")
'画像表示
'Const AV_DOC_VIEW = 2
'Const AV_PAGE_VIEW = 4
If check = 1 Then 'サムネール表示
ok = AcroExchAVDoc(fIndex).OpenInWindowEx(Filename, form1.DefInstance.Panel1.Handle.ToInt32, AV_DOC_VIEW, True,0,PDUseNone, 1, 0, 0, 0)
ElseIf check = 0 Then '通常
ok = AcroExchAVDoc(fIndex).OpenInWindowEx(Filename,
form1.DefInstance.Panel1.Handle.ToInt32, AV_PAGE_VIEW,
True, 0, PDUseBookmarks, 1, 0, 0, 0)
End If
end sub
とゆう感じでファイルを開くときにopenflgs(AV_DOC_VIEWの部分)の値を変えて表示を変更しているのですが、これをファイルを開くときでなくてボタン一つで切り替えたいです。
よろしくお願いします。
こういうことじゃないのかな?
# まず初めに、
# Adobe Acrobat はインストールされてますか?
# AVDoc を CreateObject できているってことは、
# インストールされているとは思いますが。
フォーム上にボタンを3つ配置して、
下のコードを貼り付けて、実行して下さい。
Option Explicit
Private AcroApp As Object 'Acrobat.CAcroApp
Private AcroAVDoc As Object 'Acrobat.CAcroAVDoc
Private AcroPDDoc As Object 'Acrobat.CAcroPDDoc
Private bRetValue As Boolean
Private Const PDUseThumbs = 2
Private Const PDUseNone = 1
Private Sub Command1_Click()
Dim filename As String
filename = "c:\a.pdf"
Set AcroApp = CreateObject("AcroExch.App")
bRetValue = AcroApp.Show
If bRetValue = False Then MsgBox "ERROR"
Set AcroPDDoc = CreateObject("AcroExch.PDDoc")
bRetValue = AcroPDDoc.Open(filename)
If bRetValue = False Then MsgBox "ERROR"
Set AcroAVDoc = AcroPDDoc.OpenAVDoc("")
End Sub
Private Sub Command2_Click()
'* サムネール表示
bRetValue = AcroAVDoc.SetViewMode(PDUseThumbs)
End Sub
Private Sub Command3_Click()
'* サムネール非表示
bRetValue = AcroAVDoc.SetViewMode(PDUseNone)
End Sub
Private Sub Form_Load()
Command1.Caption = "Acrobat 起動"
Command2.Caption = "サムネール表示"
Command3.Caption = "サムネール非表示"
End Sub
Acrobat4.0のSDKを使用し、VBのパネルにPDF画像を表示させています。
通常のAcrobatのように左側にサムネールを開いて表示/閉じて表示(タグのみ見える状態)での変更はとろさんのおかげでできるようになりました。
ありがとうございました。
ただ、現状としてはサムネールを全く表示しない状態(Acrobatの右パネル部分のみ)とサムネール部分+画像部分(Acrobatの左右両パネル)の2種類の表示を考えています。
ok = AcroExchAVDoc(fIndex).OpenInWindowEx(Filename,
form1.DefInstance.Panel1.Handle.ToInt32, AV_PAGE_VIEW,
True, 0, PDUseNone, 1, 0, 0, 0)
この関数をファイルオープン時に使用し、第3引数を変更すると、新規オープン時には変更ができました。
表示中に上記のような変更を行いたい場合には、もう一度ファイルを開きなおさなければならないのでしょうか?第3引数部分の変更のみ行うやり方をご存知でしたらお願いします。
ツイート | ![]() |