Do you own a Debenu Quick PDF Library version 7, 8, 9, 10, 11, 12, 13 or iSEDQuickPDF license? Upgrade to Debenu Quick PDF Library 14 today!

Debenu Quick PDF Library - PDF SDK Community Forum Homepage
Forum Home Forum Home > For Users of the Library > I need help - I can help
  New Posts New Posts RSS Feed - Change Hyperlink Information
  FAQ FAQ  Forum Search   Register Register  Login Login

Change Hyperlink Information

 Post Reply Post Reply
Author
Message
Andrew Lindsay View Drop Down
Beginner
Beginner


Joined: 13 Oct 06
Status: Offline
Points: 2
Post Options Post Options   Thanks (0) Thanks(0)   Quote Andrew Lindsay Quote  Post ReplyReply Direct Link To This Post Topic: Change Hyperlink Information
    Posted: 04 Jan 10 at 11:41PM
I have a pdf file that has lots of hyperlinks to external documents.  I would like to programatically change the link destination (or file source) from X:\MyPath\Doc.pdf  -  to Y:\MyNewPath\AnotherDirectory\Doc.pdf
 
Is this possible, and what functions would I need to call.
 
I am using the DLL version with Powerbasic.
 
best regards
 
Andrew Lindsay
Back to Top
Ingo View Drop Down
Moderator Group
Moderator Group
Avatar

Joined: 29 Oct 05
Status: Offline
Points: 3530
Post Options Post Options   Thanks (0) Thanks(0)   Quote Ingo Quote  Post ReplyReply Direct Link To This Post Posted: 05 Jan 10 at 7:14AM
Hi Andrew!

Perhaps here is something for you:
http://www.quickpdflibrary.com/help/quickpdf/AnnotationsAndHotspotLinks.php
It's possible (perhaps) that DeleteAnnotation works with your links, too.
If it's so then you can use:
AnnotationCount (how many are there on the page)
Get...functions (to get the old properties)
DeleteAnnotation (to remove the old one)
Add...functions (to set the new one)

Cheers, Ingo
 


Edited by Ingo - 05 Jan 10 at 7:14AM
Back to Top
Andrew Lindsay View Drop Down
Beginner
Beginner


Joined: 13 Oct 06
Status: Offline
Points: 2
Post Options Post Options   Thanks (0) Thanks(0)   Quote Andrew Lindsay Quote  Post ReplyReply Direct Link To This Post Posted: 06 Jan 10 at 12:50AM
Ingo,
 
I have been trying to snoop around and find out how to do what you have suggested.  To this end, I have tried to retrieve all the characteristics of the links but I am having a few problems.
 
Here is the code I am using (powerbasic)
 
#COMPILE EXE
#DIM ALL
#DEBUG ERROR ON
#INCLUDE "QuickPDFDLL0717.INC"
#INCLUDE "Win32Api.inc"
TYPE AnnoInfo
    ActionType  AS STRING * %MAX_PATH
    ActionID    AS LONG
    AnnoStr(14) AS STRING * %MAX_PATH
    AnnoInt(3)  AS LONG
    AnnoDbl(12) AS DOUBLE
END TYPE
FUNCTION PBMAIN () AS LONG
    DIM InstanceID AS DWORD
    DIM i          AS LONG
    DIM myAnno     AS AnnoInfo
    DIM InfoString AS STRING
    InstanceID = QuickPDFCreateLibrary()
    IF (QuickPDFUnlockKey(InstanceID, "INSERT YOUR KEY HERE") = 1) THEN
        IF (QuickPDFLoadFromFile(InstanceID, "TestLinks.pdf") = 1) THEN
            QuickPDFSelectPage InstanceID, 1

            FOR I = 1 TO QuickPDFAnnotationCount(InstanceID)
                myAnno.ActionID = QuickPDFGetAnnotActionID(InstanceID, i)
                myAnno.ActionType = QuickPDFGetActionType(InstanceID, myAnno.ActionID)
                myAnno.AnnoStr(1) = QuickPDFGetAnnotStrProperty(InstanceID, i, 101)
                myAnno.AnnoStr(2) = QuickPDFGetAnnotStrProperty(InstanceID, i, 102)
                myAnno.AnnoStr(3) = QuickPDFGetAnnotStrProperty(InstanceID, i, 103)
                myAnno.AnnoStr(4) = QuickPDFGetAnnotStrProperty(InstanceID, i, 104)
                myAnno.AnnoStr(5) = QuickPDFGetAnnotStrProperty(InstanceID, i, 111)
                myAnno.AnnoStr(6) = QuickPDFGetAnnotStrProperty(InstanceID, i, 112)
                myAnno.AnnoStr(7) = QuickPDFGetAnnotStrProperty(InstanceID, i, 113)
                myAnno.AnnoStr(8) = QuickPDFGetAnnotStrProperty(InstanceID, i, 114)
                myAnno.AnnoStr(9) = QuickPDFGetAnnotStrProperty(InstanceID, i, 115)
                myAnno.AnnoStr(10) = QuickPDFGetAnnotStrProperty(InstanceID, i, 117)
                myAnno.AnnoStr(11) = QuickPDFGetAnnotStrProperty(InstanceID, i, 118)
                myAnno.AnnoStr(12) = QuickPDFGetAnnotStrProperty(InstanceID, i, 127)
                myAnno.AnnoStr(13) = QuickPDFGetAnnotStrProperty(InstanceID, i, 129)
                myAnno.AnnoStr(14) = QuickPDFGetAnnotStrProperty(InstanceID, i, 130)
                myAnno.AnnoInt(1) = QuickPDFGetAnnotIntProperty(InstanceID, i, 109)
                myAnno.AnnoInt(2) = QuickPDFGetAnnotIntProperty(InstanceID, i, 116)
                myAnno.AnnoInt(3) = QuickPDFGetAnnotIntProperty(InstanceID, i, 128)
                myAnno.AnnoDbl(1) = QuickPDFGetAnnotDblProperty(InstanceID, i, 105)
                myAnno.AnnoDbl(2) = QuickPDFGetAnnotDblProperty(InstanceID, i, 106)
                myAnno.AnnoDbl(3) = QuickPDFGetAnnotDblProperty(InstanceID, i, 107)
                myAnno.AnnoDbl(4) = QuickPDFGetAnnotDblProperty(InstanceID, i, 108)
                myAnno.AnnoDbl(5) = QuickPDFGetAnnotDblProperty(InstanceID, i, 119)
                myAnno.AnnoDbl(6) = QuickPDFGetAnnotDblProperty(InstanceID, i, 120)
                myAnno.AnnoDbl(7) = QuickPDFGetAnnotDblProperty(InstanceID, i, 121)
                myAnno.AnnoDbl(8) = QuickPDFGetAnnotDblProperty(InstanceID, i, 122)
                myAnno.AnnoDbl(9) = QuickPDFGetAnnotDblProperty(InstanceID, i, 123)
                myAnno.AnnoDbl(10) = QuickPDFGetAnnotDblProperty(InstanceID, i, 124)
                myAnno.AnnoDbl(11) = QuickPDFGetAnnotDblProperty(InstanceID, i, 125)
                myAnno.AnnoDbl(12) = QuickPDFGetAnnotDblProperty(InstanceID, i, 126)

                InfoString = FORMAT$(myAnno.ActionID) + $LF + _
                             TRIM$(myAnno.ActionType) + $LF + _
                             TRIM$(myAnno.AnnoStr(1)) + $LF + _
                             TRIM$(myAnno.AnnoStr(2)) + $LF + _
                             TRIM$(myAnno.AnnoStr(3)) + $LF + _
                             TRIM$(myAnno.AnnoStr(4)) + $LF + _
                             TRIM$(myAnno.AnnoStr(5)) + $LF + _
                             TRIM$(myAnno.AnnoStr(6)) + $LF + _
                             TRIM$(myAnno.AnnoStr(7)) + $LF + _
                             TRIM$(myAnno.AnnoStr(8)) + $LF + _
                             TRIM$(myAnno.AnnoStr(9)) + $LF + _
                             TRIM$(myAnno.AnnoStr(10)) + $LF + _
                             TRIM$(myAnno.AnnoStr(11)) + $LF + _
                             TRIM$(myAnno.AnnoStr(12)) + $LF + _
                             TRIM$(myAnno.AnnoStr(13)) + $LF + _
                             TRIM$(myAnno.AnnoStr(14)) + $LF + _
                             FORMAT$(myAnno.AnnoInt(1)) + $LF + _
                             FORMAT$(myAnno.AnnoInt(2)) + $LF + _
                             FORMAT$(myAnno.AnnoInt(3)) + $LF + _
                             FORMAT$(myAnno.AnnoDbl(1)) + $LF + _
                             FORMAT$(myAnno.AnnoDbl(2)) + $LF + _
                             FORMAT$(myAnno.AnnoDbl(3)) + $LF + _
                             FORMAT$(myAnno.AnnoDbl(4)) + $LF + _
                             FORMAT$(myAnno.AnnoDbl(5)) + $LF + _
                             FORMAT$(myAnno.AnnoDbl(6)) + $LF + _
                             FORMAT$(myAnno.AnnoDbl(7)) + $LF + _
                             FORMAT$(myAnno.AnnoDbl(8)) + $LF + _
                             FORMAT$(myAnno.AnnoDbl(9)) + $LF + _
                             FORMAT$(myAnno.AnnoDbl(10)) + $LF + _
                             FORMAT$(myAnno.AnnoDbl(11)) + $LF + _
                             FORMAT$(myAnno.AnnoDbl(12))
                MSGBOX InfoString
               
                QuickPDFDeleteAnnotation(InstanceID, i)
            NEXT
        ELSE
            MSGBOX "Document not loaded"
        END IF
    END IF
    QuickPDFSaveToFile(InstanceID, "TestLinksModified.pdf")
    QuickPDFReleaseLibrary(InstanceID)
END FUNCTION
Now when I run this program I do not get all the informatino parameters returned, I only get the first four pieces of information.
 
I have used debug to look at what is happenning, and I seem to get RTL errors reported when accessing certain pieces of information.  The function calls that generate the errors and the error reports are as follows.
 
 
myAnno.ActionType = QuickPDFGetActionType(InstanceID, myAnno.ActionID)
Invalid address specified to RtlSizeHeap( 00180000, 015D30D8 )<0A>
myAnno.AnnoStr(1) = QuickPDFGetAnnotStrProperty(InstanceID, i, 101)
Invalid address specified to RtlSizeHeap( 00180000, 015D33C0 )<0A>
myAnno.AnnoStr(6) = QuickPDFGetAnnotStrProperty(InstanceID, i, 112)
Invalid address specified to RtlSizeHeap( 00180000, 015D30D8 )<0A>
myAnno.AnnoStr(8) = QuickPDFGetAnnotStrProperty(InstanceID, i, 114)
Invalid address specified to RtlSizeHeap( 00180000, 015EDAE8 )<0A>
myAnno.AnnoStr(13) = QuickPDFGetAnnotStrProperty(InstanceID, i, 129)
Invalid address specified to RtlSizeHeap( 00180000, 0151F6F8 )<0A>

Do you have any ideas as to what these errors are, or is there any other information that I could supply to assist?
 
Regards
 
Andrew Lindsay
      
Back to Top
Ingo View Drop Down
Moderator Group
Moderator Group
Avatar

Joined: 29 Oct 05
Status: Offline
Points: 3530
Post Options Post Options   Thanks (0) Thanks(0)   Quote Ingo Quote  Post ReplyReply Direct Link To This Post Posted: 06 Jan 10 at 11:42AM
Hi Andrew!

Sorry... but i think perhaps now's the time to post on the official support-page ;-)

Cheers, Ingo
Back to Top
 Post Reply Post Reply
  Share Topic   

Forum Jump Forum Permissions View Drop Down

Forum Software by Web Wiz Forums® version 11.01
Copyright ©2001-2014 Web Wiz Ltd.

Copyright © 2017 Debenu. Debenu Quick PDF Library is a PDF SDK. All rights reserved. AboutContactBlogSupportOnline Store