Print Page | Close Window

PDF Merge and renumber pages

Printed From: www.exp-systems.com
Category: PDF reDirect
Forum Name: Programming
Forum Discription: VBA and Batch Tools to control PDF reDirect Pro
URL: http://www.exp-systems.com/Forum_exp/forum_posts.asp?TID=788
Printed Date: 22 Nov 24 at 7:54PM


Topic: PDF Merge and renumber pages
Posted By: JSPeta
Subject: PDF Merge and renumber pages
Date Posted: 23 Sep 11 at 9:30PM
I am already merging PDF files in one PDF file with VBA code. Is there a way to re-number the pages in the new merged PDF file using VBA code.

Thanks
Jim [IMG]smileys/smiley1.gif" align="middle" />



Replies:
Posted By: Michel_K17
Date Posted: 23 Sep 11 at 11:40PM
Hi,

    Probably your best bet for renumbering is to use the stamp feature, and place a new stamp on top of each page with the page number.

   Before playing with the VBA code, take a look at the stamp called "Page Number Footer.txt" which is what you are looking for. Finally, take a look at the sample code, and search for the word "Utility_Apply_Text_Stamp", and look for the sample code for applying a stamp to your new merged  PDF.

   Cheers!



-------------
Michel Korwin-Szymanowski
EXP Systems LLC


Posted By: JSPeta
Date Posted: 25 Sep 11 at 2:38PM
Hi, I find this, but I don't see where I can apply it to my pdf in some path. I am not understanding something

thanks
Jim


   This setting is a reference to a pre-established stamp that you created ahead of time with PDF reDirect Pro in the Preferences >> Stamps screen. The stamps are either a PDF style stamp or a TEXT style stamp. Therefore, what you would need to provide is the name of the stamp file.

    If you want to add a text stamp (also known as a watermark) on your PDF "on-the-fly" through your code, you can use the following command:

    oPDF.Utility_Apply_Text_Stamp

    You can specify the text, color, location, and a URL link if you want. Here are more details:

        ' Sample Code that applies a text stamp to your new PDF
        '------------------------------------------------------
        ' Parameters are:
        ' - Pages: FIRST_PAGE or ALL_PAGES or LAST_PAGE or NEW_PAGE_IN_FRONT or
        '           NEW_PAGE_AT_BACK or SECOND_PAGE_ONWARD or FIRST_TO_SECOND_TO_LAST
        ' - Location: UPPER_LEFT or UPPER_CENTER or UPPER_RIGHTCENTER or
        '              CENTER_STRETCHED or LOWER_LEFT or LOWER_CENTER or LOWER_RIGHT
        ' - Layer: ONTOP or UNDERNEATH
        '           Warning: Powerpoint has an opaque bottommost layer so stamps will never appear unless ONTOP
        ' - WebLink: Hyperlink (http://, https://, ftp://, mailto:) associated with your text
        '             Examples: "http://www.exp-systems.com", or "mailto:test@yahoo.com"
        ' - JavaScript: for experts only. Insert Javascript to turn stamp into a button.
        ' - Text: The text you want to display
        ' - Standard Font: Here are the fonts you can use:
        '      - FONT_COURIER, or FONT_COURIER_BOLD, or FONT_COURIER_BOLD_OBLIQUE, or FONT_COURIER_OBLIQUE
        '      - FONT_HELVETICA, or FONT_HELVETICA_BOLD, or FONT_HELVETICA_BOLD_OBLIQUE, or FONT_HELVETICA_OBLIQUE
        '      - FONT_TIMES, or FONT_TIMES_BOLD, or FONT_TIMES_OBLIQUE, or FONT_TIMES_BOLD_OBLIQUE
        ' - Text Style: Select Style of Text such as Size, Color and/or Underline.
        '               I have created a few standard constants that you can use, or you
        '               can make your own. Colors are given in Red/Green/Blue
        '      - UNDERLINE = ""
        '      - SIZE10 = "[S=010]"               << S = "Text Size"
        '      - SIZE12 = "[S=012]"               << S = "Text Size"
        '      - SIZE14 = "[S=014]"               << S = "Text Size"
        '      - BLACKTEXT = "[T=000,000,000]"    << T = "Text Color"
        '      - YELLOWBACK = "[B=255,255,000]"   << B = "Back Color"
        '
        TempBool = oPDF.Utility_Apply_Text_Stamp(FIRST_PAGE, _
                                           LOWER_LEFT, _
                                           ONTOP, _
                                           "http://www.exp-systems.com", _
                                           "", _
                                           "Your Text Here", _
                                           FONT_HELVETICA, _
                                           UNDERLINE & SIZE12 & BLACKTEXT & YELLOWBACK)


Posted By: JSPeta
Date Posted: 25 Sep 11 at 4:07PM
With a little school of hard knocks, reading, and being lucky, I have figured it out.

Jim


        TempBool = .Utility_Merge_PDF_Files(sJobKeyPath, Files_to_Merge)
        TempBool = .Utility_Open_PDF(sJobKeyPath, "")       
        TempBool = .Utility_Apply_Text_Stamp("1", "6", "true", "", "", "AIHA Participant 199873             Page <#> of <###>   AAMT Control # F101 Rev. 0 3/5/2010", "4", " [s=010][B=255-255-255]")
        TempBool = .Utility_Close_PDF(sJobKeyPath)


Posted By: Michel_K17
Date Posted: 28 Sep 11 at 8:30AM

Good job! I am glad that you were able to figure it out. Smile

Cheers!



-------------
Michel Korwin-Szymanowski
EXP Systems LLC


Posted By: JSPeta
Date Posted: 03 Oct 11 at 8:09AM
This is my working VBA code with no liabilty on my part.
Jim
------------------------------------------

    Dim oPDF As New PDF_reDirect_v25002.Batch_RC_AXD
    Dim Files_to_Merge(50) As String
    Dim TempBool As Boolean
    Dim sJobKeyPath As String
    Dim dbs As DAO.Database
    Dim rs As DAO.Recordset
    Dim sSQL As Variant
    Dim nJobID As Variant
    Dim sNextFile As Variant
    Dim nFileCnt As Integer
    ' system folder definition
    Dim fso
    Dim fol As String
    Set fso = CreateObject("Scripting.FileSystemObject")
    ' process all lab report results into PFD's
    Call cmdRunAll_Click
    
    nJobID = [Forms]![frmCustomer]![frmJob]![JobID]
    Set dbs = CurrentDb
    sSQL = "SELECT tblJob.JobKey FROM tblJob WHERE tblJob.JobID =" & nJobID
    Set rs = dbs.OpenRecordset(sSQL)
     sJobKeyPath = rs.Fields(0)
    ' Files to Merge
    'sPath = "c:\CSLocal\PDFS"
    '-----------------------------
    ' count the PDF files in folder
    nFileCnt = 0
    
    sNextFile = Dir$("c:\CSLocal\PDFS\*.pdf*")
    Do While sNextFile <> ""
        nFileCnt = nFileCnt + 1
        sNextFile = Dir
       ' MsgBox sNextFile
    Loop
    '------------------------
    ' Fill the array with all pdf's in the folder
    Dim iCnt As Integer
    iCnt = 0
    sNextFile = Dir$("c:\CSLocal\PDFS\*.pdf*")
    For iCnt = 1 To nFileCnt
       Files_to_Merge(iCnt) = "c:\CSLocal\PDFS\" + sNextFile
       sNextFile = Dir
    Next iCnt
   ' Set file name for output
    sJobKeyPath = strFolderPath + sJobKeyPath + "\LabCust_Result.pdf"
    ' merge all pdfs into
    With oPDF
        '
        TempBool = .Utility_Merge_PDF_Files(sJobKeyPath, Files_to_Merge)
        If Not TempBool Then
            ' NOTES ON ERROR CODES for oPDF.ErrorLastDLL
            ' 401 - One of the Input File could not be opened
            ' 410 - One of the Input File could not be decrypted
            MsgBox "An Error Occured: " & .LastErrorDescription & vbCrLf & _
                     "Error Number =" & Str$(.LastErrorNumber) & vbCrLf & _
                     "DLL Error Number =" & Str$(.ErrorLastDLL), _
                    vbExclamation
        Else
            MsgBox "Merge Successful.", vbInformation
        End If
       
    End With
    'release the resultant pdf for more work below
    ' Add footer with page re-numbering
    With oPDF
    
        TempBool = .Utility_Open_PDF(sJobKeyPath, "")
        TempBool = .Utility_Apply_Text_Stamp("1", "6", "true", "", "", "AIHA Participant 199873             Page <#> of <###>   AAMT Control # F101 Rev. 0 3/5/2010", "4", " [s=010][B=255-255-255]")
        TempBool = .Utility_Close_PDF(sJobKeyPath)
    End With
    Set oPDF = Nothing
-------------------------------------------------------


Posted By: Michel_K17
Date Posted: 03 Oct 11 at 10:21AM
Thanks for posting the solution! 



Print Page | Close Window