Jump to content
mLipok

Acrobat Reader - ActiveX Viewer

Recommended Posts

Today, in the end as well, worked out using the Acrobat Reader ActiveX COM Object "AcroPDF.PDF.1"

#include-once
#include <Constants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
#include <MenuConstants.au3>
#include <WinAPI.au3>

;~ Thanks to BrewManNH
;~ http://www.autoitscript.com/forum/topic/134878-guiregistermsg-replacement-for-guictrlsetonevent-and-guigetmsg/
;~ Thanks to mikell
;~ http://www.autoitscript.com/forum/topic/161985-how-to-close-gui-with-guiregistermsg/


; Install a custom error handler
Global $oMyError = ObjEvent("AutoIt.Error", "_ComErrFunc")

Global $__hExampleGUI
Global $__idOPEN
Global $_fExit

Global $__hACROBAT_GUI = ''
Global $__idACROBAT_GUI_CTRL_AX = ''
Global $__oACROBAT_READER = ''

#include <GUIConstantsEx.au3>

;~ GUIRegisterMsg($WM_ERASEBKGND, "_WM_EXTRACTOR")
;~ GUIRegisterMsg($WM_PAINT, "_WM_EXTRACTOR")
;~ GUIRegisterMsg($WM_ACTIVATE, "_WM_EXTRACTOR")
;~ GUIRegisterMsg($WM_CAPTURECHANGED, "_WM_EXTRACTOR")
;~ GUIRegisterMsg($WM_DEVICECHANGE, "_WM_EXTRACTOR")
GUIRegisterMsg($WM_EXITSIZEMOVE, "_WM_EXTRACTOR")
GUIRegisterMsg($WM_COMMAND, "_WM_EXTRACTOR")
GUIRegisterMsg($WM_SYSCOMMAND, "_WM_EXTRACTOR")
GUIRegisterMsg($WM_HSCROLL, "_WM_EXTRACTOR")

_ExampleProgram_Gui()

While 1
    Sleep(10)
    If $_fExit Then
        _ACROBAT_GUI_DELETE()
        DeleteGui()
        Exit
    EndIf
WEnd


Func DeleteGui()
    GUIDelete($__hExampleGUI)
EndFunc   ;==>DeleteGui

Func _ExampleProgram_Gui()
    ; Create a GUI with various controls.
    $__hExampleGUI = GUICreate("Example")
    $__idOPEN = GUICtrlCreateButton("&Open", 310, 370, 85, 25)

    ; Display the GUI.
    GUISetState(@SW_SHOW, $__hExampleGUI)
EndFunc   ;==>_ExampleProgram_Gui



#Region ACROBAT FUNCTION
Func _AcrobatInit()
    $__oACROBAT_READER = ObjCreate("AcroPDF.PDF.1");
    Return $__oACROBAT_READER.GetVersions
EndFunc   ;==>_AcrobatInit

Func _Acrobat_Events(ByRef $aMSG)
    If $aMSG[1] = $__hACROBAT_GUI Then
        Switch $aMSG[0]
            Case $GUI_EVENT_CLOSE
                _ACROBAT_GUI_DELETE()
        EndSwitch
    EndIf
EndFunc   ;==>_Acrobat_Events

Func _ACROBAT_Destroy()
    $__oACROBAT_READER = ""
;~  MsgBox(1,'test','destroyed')
EndFunc   ;==>_ACROBAT_Destroy

Func _AcrobatShow($sFile, $sTitle = "PDF ", $iLeft = 50, $iTop = 0, $iWidth = 1000, $iHeight = 700)
    If FileExists($sFile) Then
        _AcrobatInit()

        ; Set option
        $__oACROBAT_READER.src = $sFile
        $__oACROBAT_READER.SetLayoutMode(4)
        $__oACROBAT_READER.SetPageMode(1)
        $__oACROBAT_READER.SetShowToolbar(0)
        $__oACROBAT_READER.SetView(1)

        ; Create GUI
        $__hACROBAT_GUI = GUICreate($sTitle, $iWidth, $iHeight, $iLeft, $iTop, BitOR($GUI_SS_DEFAULT_GUI, $WS_SIZEBOX, $WS_MAXIMIZEBOX))
        $__idACROBAT_GUI_CTRL_AX = GUICtrlCreateObj($__oACROBAT_READER, 5, 5, $iWidth - 20, $iHeight - 10)
        GUICtrlSetStyle($__idACROBAT_GUI_CTRL_AX, $WS_VISIBLE)

        GUISetState()
    EndIf
EndFunc   ;==>_AcrobatShow


Func _ACROBAT_Refresh()
    If IsObj($__oACROBAT_READER) Then
        Local $hPreviouslyGui = GUISwitch($__hACROBAT_GUI)
        GUISetState(@SW_LOCK)
        Local $iGUI_PDFWidth = WinGetPos($__hACROBAT_GUI)[2] - 20
        Local $iGUI_PDFHeight = WinGetPos($__hACROBAT_GUI)[3] - 40
        Local $sFile = $__oACROBAT_READER.src

        ; this below line do not works with Acro Reader
        ; Local $iCurrentPage = $__oACROBAT_READER.GetNumber
        Local $iCurrentPage = 0
        _ACROBAT_Destroy()
        GUICtrlDelete($__idACROBAT_GUI_CTRL_AX)
        _AcrobatInit()
        $__idACROBAT_GUI_CTRL_AX = GUICtrlCreateObj($__oACROBAT_READER, 5, 5, $iGUI_PDFWidth, $iGUI_PDFHeight)
        $__oACROBAT_READER.src = $sFile
;~      $__oACROBAT_READER.SetCurrentPage($iCurrentPage)
        GUISetState(@SW_UNLOCK)
        GUISwitch($hPreviouslyGui)
    EndIf
EndFunc   ;==>_ACROBAT_Refresh

Func _ACROBAT_GUI_DELETE()
    _ACROBAT_Destroy()
    if IsHWnd($__hACROBAT_GUI) then GUIDelete($__hACROBAT_GUI)
EndFunc   ;==>_ACROBAT_GUI_DELETE

#EndRegion ACROBAT FUNCTION

#Region MSG and ERROR  HANDLER
Func _WM_EXTRACTOR($hWnd, $iMsg, $wParam, $lParam)
;~  ConsoleWrite('! $hWnd = ' & $hWnd & '    $iMsg = ' & $iMsg & '('&HEX($iMsg)&')'& '    $wParam = ' & $wParam & '    $lParam = ' & $lParam & @CRLF)
    If $hWnd = ControlGetHandle($__hACROBAT_GUI, '', $__idACROBAT_GUI_CTRL_AX) Then
        ConsoleWrite('! --------------  $hWnd = ' & $hWnd & '    $iMsg = ' & $iMsg & '(' & Hex($iMsg) & ')' & '    $wParam = ' & $wParam & '    $lParam = ' & $lParam & @CRLF)
    EndIf
    If $hWnd = $__hACROBAT_GUI Then
        Switch $iMsg
            Case $WM_COMMAND
                #cs
                    Case $WM_ACTIVATE
                    Local $test = BitAND($wParam, 0x00000004)
                    if $test <> 0 then
                    MsgBox(1,'$WM_ACTIVATE','test')
                    _ACROBAT_Refresh()
                    EndIf
                    Case $WM_ERASEBKGND
                    WinGetHandle("[ACTIVE]")
                    if $__hACROBAT_GUI <> _WinAPI_GetWindow ( $__hACROBAT_GUI, $GW_HWNDPREV ) then
                    ConsoleWrite('!  Case $WM_ERASEBKGND' & @CRLF)
                    _ACROBAT_Refresh()
                    _WinAPI_RedrawWindow($__hACROBAT_GUI,0,0,$RDW_NOERASE)
                    EndIf
                    Case $WM_PAINT
                    _WinAPI_RedrawWindow($__hACROBAT_GUI,0,0,$RDW_NOERASE)
                    Case $WM_CAPTURECHANGED
                    _ACROBAT_Refresh()
                    Case $WM_DEVICECHANGE
                    _ACROBAT_Refresh()
                #ce
            Case $WM_EXITSIZEMOVE
                _ACROBAT_Refresh()
            Case $WM_SYSCOMMAND
;~              Local $test = BitAND($wParam, 0xFFF0)
                Local $test = BitAND($wParam, 0x0000FFFF)
                Switch $test
                    Case $SC_CLOSE
                        _ACROBAT_GUI_DELETE()
                    Case $SC_CONTEXTHELP
                    Case $SC_DEFAULT
                    Case $SC_HOTKEY
                    Case $SC_HSCROLL
                    Case $SC_KEYMENU
                    Case $SC_MAXIMIZE
                        _ACROBAT_Refresh()
                    Case $SC_MINIMIZE
                    Case $SC_MONITORPOWER
                    Case $SC_MOUSEMENU
                    Case $SC_MOVE
;~                      _ACROBAT_Refresh()
                    Case $SC_NEXTWINDOW
;~                      _ACROBAT_Refresh()
                    Case $SC_PREVWINDOW
;~                      _ACROBAT_Refresh()
                    Case $SC_RESTORE
                        _ACROBAT_Refresh()
                    Case $SC_SCREENSAVE
                    Case $SC_SIZE
                    Case $SC_TASKLIST
                    Case $SC_VSCROLL
                EndSwitch
        EndSwitch
    EndIf


    If $hWnd = $__hExampleGUI Then
        Switch $iMsg
            Case $WM_COMMAND
                Local $nID = BitAND($wParam, 0x0000FFFF)
                Local $hCtrl = $lParam
                Switch $nID
                    Case $__idOPEN
                        if not IsObj($__oACROBAT_READER) then
                            _AcrobatShow(FileOpenDialog("Choose PDF", "C:\Temp", "PDF Files(*.pdf)", 3)) ; put your own start folder here)
                        EndIf
                EndSwitch

            Case $WM_SYSCOMMAND
                Local $test = BitAND($wParam, 0xFFF0)
                Switch $test
                    Case $SC_CLOSE
                        $_fExit = True
                    Case $SC_CONTEXTHELP
                    Case $SC_DEFAULT
                    Case $SC_HOTKEY
                    Case $SC_HSCROLL
                    Case $SC_KEYMENU
                    Case $SC_MAXIMIZE
                    Case $SC_MINIMIZE
                    Case $SC_MONITORPOWER
                    Case $SC_MOUSEMENU
                    Case $SC_MOVE
                    Case $SC_NEXTWINDOW
                    Case $SC_PREVWINDOW
                    Case $SC_RESTORE
                    Case $SC_SCREENSAVE
                    Case $SC_SIZE
                    Case $SC_TASKLIST
                    Case $SC_VSCROLL
                EndSwitch
        EndSwitch
    EndIf

    Return $GUI_RUNDEFMSG
EndFunc   ;==>_WM_EXTRACTOR

Func _ComErrFunc()
    Local $HexNumber = Hex($oMyError.number, 8)
    MsgBox(0, "AutoItCOM Test", _
            "We intercepted a COM Error !" & @CRLF & @CRLF & _
            "err.description is: " & @TAB & $oMyError.description & @CRLF & _
            "err.windescription:" & @TAB & $oMyError.windescription & @CRLF & _
            "err.number is: " & @TAB & $HexNumber & @CRLF & _
            "err.lastdllerror is: " & @TAB & $oMyError.lastdllerror & @CRLF & _
            "err.scriptline is: " & @TAB & $oMyError.scriptline & @CRLF & _
            "err.source is: " & @TAB & $oMyError.source & @CRLF & _
            "err.helpfile is: " & @TAB & $oMyError.helpfile & @CRLF & _
            "err.helpcontext is: " & @TAB & $oMyError.helpcontext _
            )
    SetError(1)
EndFunc   ;==>_ComErrFunc

#EndRegion MSG and ERROR  HANDLER

Any comments are welcome.

Cheers

mLipok

Edited by mLipok
fix code highlighitng

Signature beginning:   Wondering who uses AutoIT and what it can be used for ?
* GHAPI UDF - modest beginning - communication with GitHub REST API Forum Rules *
ADO.au3 UDF     POP3.au3 UDF     XML.au3 UDF    How to use IE.au3  UDF with  AutoIt v3.3.14.x  for other useful stuff click the following button

Spoiler

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST APIErrorLog.au3 UDF - A logging Library *

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF SMTP Mailer UDF * Dual Monitor resolution detection * * 2GUI on Dual Monitor System * _SciLexer.au3 UDF * SciTE - Lexer for console pane

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * 

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskScheduler

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2019-10-01

Share this post


Link to post
Share on other sites

Below I would like to introduce a new version of "AcrobatReaderViewer.au3," which uses my new UDF file:

"GUIRegisterMsg_API.au3"

 

mLipok

 

EDIT: added link

EDIT: I forgot about example:

#include "AcrobatReaderViewer.au3"
#include "GUIRegisterMsg_API.au3"

Global $oMyError = ObjEvent("AutoIt.Error", "_ComErrFunc")

Global $_hExampleGUI
Global $_idOPEN
Global $_bExit

Main()

Func Main()
    _GUIRegisterMsg_API_Start()
    ; here you add support for _MY_CURRENT_GUI_WM_EXTRACTOR
    _GUIRegisterMsg_API_AddFunc(_MY_CURRENT_GUI_WM_EXTRACTOR)
    ; here you add support for _ACROBAT_WM_EXTRACTOR
    _GUIRegisterMsg_API_AddFunc(_ACROBAT_WM_EXTRACTOR)

    ; here you can chceck what happen when you remove Remove Function from $__aGUIRegisterMsg_API[] by using _GUIRegisterMsg_API_RemoveFunc
    ; _GUIRegisterMsg_API_RemoveFunc(_ACROBAT_WM_EXTRACTOR)

    _ExampleProgram_Gui()

    While 1
        Sleep(10)
        If $_bExit Then
            _ACROBAT_GUI_DELETE()
            DeleteGui()
            Exit
        EndIf
    WEnd

EndFunc   ;==>Main
Exit

#Region EXAMPLE GUI
Func DeleteGui()
    GUIDelete($_hExampleGUI)
EndFunc   ;==>DeleteGui

Func _ExampleProgram_Gui()
    ; Create a GUI with various controls.
    $_hExampleGUI = GUICreate("Example")
    $_idOPEN = GUICtrlCreateButton("&Open", 310, 370, 85, 25)

    ; Display the GUI.
    GUISetState(@SW_SHOW, $_hExampleGUI)
EndFunc   ;==>_ExampleProgram_Gui
#EndRegion EXAMPLE GUI

#Region _MY_CURRENT_GUI_WM_EXTRACTOR
Func _MY_CURRENT_GUI_WM_EXTRACTOR($hWnd, $iMsg, $wParam, $lParam)
    If $hWnd = $_hExampleGUI Then
        Switch $iMsg
            Case $WM_COMMAND
                Local $nID = BitAND($wParam, 0x0000FFFF)
                Local $hCtrl = $lParam
                Switch $nID
                    Case $_idOPEN
                        If Not IsObj($__oACROBAT_READER) Then
                            _AcrobatShow(FileOpenDialog("Choose PDF", "C:\Temp", "PDF Files(*.pdf)", 3)) ; put your own start folder here)
                        EndIf
                EndSwitch

            Case $WM_SYSCOMMAND
                Local $test = BitAND($wParam, 0xFFF0)
                Switch $test
                    Case $SC_CLOSE
                        $_bExit = True
                    Case $SC_CONTEXTHELP
                    Case $SC_DEFAULT
                    Case $SC_HOTKEY
                    Case $SC_HSCROLL
                    Case $SC_KEYMENU
                    Case $SC_MAXIMIZE
                    Case $SC_MINIMIZE
                    Case $SC_MONITORPOWER
                    Case $SC_MOUSEMENU
                    Case $SC_MOVE
                    Case $SC_NEXTWINDOW
                    Case $SC_PREVWINDOW
                    Case $SC_RESTORE
                    Case $SC_SCREENSAVE
                    Case $SC_SIZE
                    Case $SC_TASKLIST
                    Case $SC_VSCROLL
                EndSwitch
        EndSwitch
    EndIf


EndFunc   ;==>_MY_CURRENT_GUI_WM_EXTRACTOR

#EndRegion _MY_CURRENT_GUI_WM_EXTRACTOR

btw.

_EXAMPLE_RegisterMsg() is not used so I removed them.

AcrobatReaderViewer.au3.Download.html

Edited by mLipok

Signature beginning:   Wondering who uses AutoIT and what it can be used for ?
* GHAPI UDF - modest beginning - communication with GitHub REST API Forum Rules *
ADO.au3 UDF     POP3.au3 UDF     XML.au3 UDF    How to use IE.au3  UDF with  AutoIt v3.3.14.x  for other useful stuff click the following button

Spoiler

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST APIErrorLog.au3 UDF - A logging Library *

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF SMTP Mailer UDF * Dual Monitor resolution detection * * 2GUI on Dual Monitor System * _SciLexer.au3 UDF * SciTE - Lexer for console pane

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * 

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskScheduler

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2019-10-01

Share this post


Link to post
Share on other sites

No.

This is just a viewer based on Acrobat Reader ActiveX control.

But you  can try to use my Debenu Quick PDF UDF


Signature beginning:   Wondering who uses AutoIT and what it can be used for ?
* GHAPI UDF - modest beginning - communication with GitHub REST API Forum Rules *
ADO.au3 UDF     POP3.au3 UDF     XML.au3 UDF    How to use IE.au3  UDF with  AutoIt v3.3.14.x  for other useful stuff click the following button

Spoiler

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST APIErrorLog.au3 UDF - A logging Library *

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF SMTP Mailer UDF * Dual Monitor resolution detection * * 2GUI on Dual Monitor System * _SciLexer.au3 UDF * SciTE - Lexer for console pane

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * 

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskScheduler

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2019-10-01

Share this post


Link to post
Share on other sites

I tried that before, but I couldn't do much with the eval version, thanks though


What is what? What is what.

Share this post


Link to post
Share on other sites

old topic but... is there a way to open password-protected PDF by providing the password internally?

it would be not strong protection but for some user impossible to crack the way of open some confidential information ....

Share this post


Link to post
Share on other sites
On 9/19/2017 at 5:30 PM, mike13 said:

old topic but... is there a way to open password-protected PDF by providing the password internally?

it would be not strong protection but for some user impossible to crack the way of open some confidential information ....

I'm just looking for the same right now

Share this post


Link to post
Share on other sites

@Qwerty212 There aren't any command line parameters for opening a PDF like that in Acrobat. If you're looking to manipulate it, I've used a python library to concatenate encrypted PDFs and I post the name of it tomorrow. If you just want to open it, start it minimized, wait for the popup, fill it out, and maximize it again. Alternately, decrypt it with a python library and encrypt it again when you are done :)


All my code provided is Public Domain... but it may not work. ;) Use it, change it, break it, whatever you want.

Spoiler

My Humble Contributions:
Personal Function Documentation - A personal HelpFile for your functions
Acro.au3 UDF - Automating Acrobat Pro
ToDo Finder - Find #ToDo: lines in your scripts

Share this post


Link to post
Share on other sites
On 9/25/2019 at 2:46 AM, seadoggie01 said:

@Qwerty212 There aren't any command line parameters for opening a PDF like that in Acrobat. If you're looking to manipulate it, I've used a python library to concatenate encrypted PDFs and I post the name of it tomorrow. If you just want to open it, start it minimized, wait for the popup, fill it out, and maximize it again. Alternately, decrypt it with a python library and encrypt it again when you are done :)

I would really appreciate it.

I need to open pdf's files from an ftp (ideally without downloading them to the local disc).

I have tried to use a secured version of SumatraPDF, but it can not open password protected files and it can not also play embedded media inside the pdfs, so I thought that creating a GUI with Acrobat Reader embedded might be a good alternative.

 

Greets from Barcelona

Share this post


Link to post
Share on other sites

@Qwerty212 The python library I used was PyPDF2. It's very quick and seems quite reliable. :) Good luck!


All my code provided is Public Domain... but it may not work. ;) Use it, change it, break it, whatever you want.

Spoiler

My Humble Contributions:
Personal Function Documentation - A personal HelpFile for your functions
Acro.au3 UDF - Automating Acrobat Pro
ToDo Finder - Find #ToDo: lines in your scripts

Share this post


Link to post
Share on other sites
1 hour ago, Qwerty212 said:

I need to open pdf's files from an ftp (ideally without downloading them to the local disc).

You can do this with QucikPDF UDF.....


Signature beginning:   Wondering who uses AutoIT and what it can be used for ?
* GHAPI UDF - modest beginning - communication with GitHub REST API Forum Rules *
ADO.au3 UDF     POP3.au3 UDF     XML.au3 UDF    How to use IE.au3  UDF with  AutoIt v3.3.14.x  for other useful stuff click the following button

Spoiler

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST APIErrorLog.au3 UDF - A logging Library *

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF SMTP Mailer UDF * Dual Monitor resolution detection * * 2GUI on Dual Monitor System * _SciLexer.au3 UDF * SciTE - Lexer for console pane

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * 

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskScheduler

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2019-10-01

Share this post


Link to post
Share on other sites
On 10/10/2019 at 3:59 PM, mLipok said:

You can do this with QucikPDF UDF.....

I didn't know it. Thanks a lot!

Is it possible to read pdf with embedded videos with this udf?

 

Greets from Barcelona

Share this post


Link to post
Share on other sites

I do not know... never tried before.

Just ask in the support topic, but could you post any example pdf file? 

Edit:

as far I only embend xml, and html file in pdf.

Edited by mLipok

Signature beginning:   Wondering who uses AutoIT and what it can be used for ?
* GHAPI UDF - modest beginning - communication with GitHub REST API Forum Rules *
ADO.au3 UDF     POP3.au3 UDF     XML.au3 UDF    How to use IE.au3  UDF with  AutoIt v3.3.14.x  for other useful stuff click the following button

Spoiler

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST APIErrorLog.au3 UDF - A logging Library *

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF SMTP Mailer UDF * Dual Monitor resolution detection * * 2GUI on Dual Monitor System * _SciLexer.au3 UDF * SciTE - Lexer for console pane

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * 

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskScheduler

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2019-10-01

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By diff
      Hello,
      still learning and trying to understand AutoIT but having problem in filling my PDF file.
       
      So my code looks like similar to this:
      Global $1 = "text text 44444444" Global $2 = "texting2 texting2" Global $3 = "newtext3 next3" ShellExecute ("C:\Users\XXX\Desktop\myPDF.pdf") WinWaitActive("MyPDF.pdf - Adobe Acrobat Reader DC") Send ("{TAB}") ClipPut($1) Send ("^v") Send ("{TAB 3}") ClipPut($2) Send("^v") Send ("{TAB}") ClipPut($3) Send("^v") So its fill my PDF form, the first field looks good, the code add the text text 4444, then second should be $2 with texting2 texting2 but for some reason the code uses for second and third field after TAB only variable $3.
      So, I receive in $2 and $3 for some reason same newtext3 next3 in both, why its skipping the variable $2? Maybe there also much better solution for instant text? Because Send writes with delay by letters which I don't like.
      Thanks!
    • By Fenzik
      Hello!
      i wrote this function as alternative to using the Com Object or Commandline version of this project, discussed also earlyer on this forum.
      Project site - http://ebstudio.info/home/xdoc2txt.html
      Advantage of this implementation is that you do not need to register Com dll, using regsvr32.
      But you still need the project Dll (xd2txlib.dll).
      Enjoy!
      ; #FUNCTION# ==================================================================================================================== ; Name ..........: _ExtractText ; Description ...: Extracts text from advanced documment formats (Doc, Docx, ODT, XLS, ...) ; Syntax ........: _ExtractText($sFilename[, $bProperties = False[, $hDll = 0]]) ; Parameters ....: $sFilename - a string value. ; $bProperties - [optional] a boolean value. Default is False. If True, documment properties will be returned instead of the text. ; $hDll - [optional] a handle value. Default is 0. Optional handle to previously opened xd2txlib.dll. By default the xd2txlib.dll (Expected in @scriptdir) will be opened and closed during the function call. ; Return value .: String, containing the text or documment properties or empty string and Error as follows: ;1 - The file does not exists. ;2 - Error during opening xd2txlib.dll. ;3 - No text returned. ; Author ........: Fenzik ; Modified ......: ; Remarks .......: Project site - http://ebstudio.info/home/xdoc2txt.html ; Related .......: ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func _ExtractText($sFilename, $bProperties = False, $hDll = 0) If Not FileExists($sFilename) Then Return SetError(1, "", "") Local $bLoaded = False If $hDll = 0 Then $hDll = DllOpen(@scriptdir&"\xd2txlib.dll") If $hDll = -1 Then Return SetError(2, "", "") $bLoaded = True Endif $aResult = DllCall($hDll, "int:cdecl", "ExtractText", "WSTR", $sFilename, "BOOL", $bProperties, "WSTR*", "") If $aResult[0] = 0 Then Return SetError(3, "", "") If $bLoaded = True Then DllClose($hDll) Return $aResult[3] EndFunc  
       
      xd2txlib-example.zip
    • By Colduction
      Hello again, i have a code that changes username to favorite, my problem is how to use ObjEvent() function to catch errors, i've red Help File and Forum's Topics but i can't understand too much😐

      Here is a code (I've copied this codes from a user of AutoIt Forum):
       
      $sOldUser = "Administrator" $sNewUser = "Admin" $oUser = ObjGet("WinNT://" & @ComputerName & "/" & $sOldUser & ",user") $oComputer = ObjGet("WinNT://" & @ComputerName) $oNewUser = $oComputer.MoveHere($oUser.ADsPath, $sNewUser) Thanks for your care, I'm new to AutoIt and days should be passed with my coding and practicing to don't bother you :)❤
    • By MakzNovice
      Hello Experts,
      I have Zero experience with Autoit + Adobe Acrobat, and I really in need to get this working as PoC.
      I am trying to automate some manual actions below are the steps I would like to do.
      INPUT to script : 
      1. PDF file to open
      2. String that I would like to add as \\Server\Directory name
      Steps : 
      1. Open the file in Adobe Acrobat Pro
      2. Browse to View > Tools > Send For Review > Open (see image 1)
      3. On the launched tool bar click on "Send for Shared Connecting" (see image 2)
      4. Next select option "Automatically Collect comments on my..." in dropdown and click 'Next' (see image 3)
      5. Select radiobutton "Network folder" and paste the input "\\Server\Directory" in text field and click 'Next' (see image 4)
      Experts, I would really appreciate a quick script which I can run and get rolling.
      Please note, I would not likwe to rely on MouseClick and/or cordinates match approach.
      PLEASE SUPPORT!!!!
      Makz
      **********************************************************************************************************
      Image 1

       
      Image 2

       
      Image 3

       
      Image 4

    • By jitendriya
      Hi every one .
      I want to read a pdf file and write into a excel using autoit , so how can i do this with out using third party server please tell me .
      Thank you..
×
×
  • Create New...