L'édition de lien Hypertexte et des Ancres en PDF à l'aide de ITextSharp
Je suis en utilisant iTextSharp bibliothèque et C#.Net pour partager mon fichier PDF.
Envisager un fichier PDF intitulé de l'échantillon.pdf contenant 72 pages. Cet exemple.pdf contient des pages qui ont un lien hypertexte qui naviguer vers une autre page. Par exemple: Dans la page 4, il y a trois liens hypertextes qui lorsqu'il est cliqué navigue correspondants, 24,27,28 page. De même que la 4ème page il y a près de 12 pages est d'avoir cette hyperliens avec eux.
Maintenant à l'aide de iTextSharp bibliothèque, j'ai eu de diviser cette pages PDF en 72 fichier séparé et enregistré avec le nom de 1.pdf,2.pdf....72.pdf. Ainsi, dans le 4.pdf en cliquant que les liens hypertexte j'ai besoin de faire le PDF accédez à 24.pdf,27.pdf,28.pdf.
S'il vous plaît aidez-moi à sortir d'ici. Comment puis-je modifier et définir les liens hypertexte dans le 4.pdf afin qu'il accède à la correspondante de fichiers pdf.
Merci,
Ashok
OriginalL'auteur ashok kumar | 2011-07-05
Vous devez vous connecter pour publier un commentaire.
Ce que vous voulez, c'est tout à fait possible. Ce que vous voulez va vous demander de travailler avec le faible niveau des objets PDF (PdfDictionary, PdfArray, etc).
Et à chaque fois que quelqu'un a besoin de travailler avec ces objets, je me réfère toujours à la PDF de Référence. Dans votre cas, vous aurez envie d'examiner le chapitre 7 (en particulier la section 3) et le chapitre 12, les articles 3 (doc au niveau de la navigation) et 5 (annotations).
En supposant que vous avez bien lu, voici ce que vous devez faire:
Étape 1.1 n'est pas simple. Il ya plusieurs différents types de "local goto" annotation formats. Vous devez déterminer quelle page un lien. Certains liens pourraient dire le PDF équivalent de "page suivante" ou "page précédente", tandis que d'autres vont inclure une référence à une page en particulier. Ce sera un "objet indirect de référence", et non pas un numéro de page.
Pour déterminer le numéro de page à partir d'une page de référence, vous devez... ouch. Ok. Le moyen le plus efficace serait d'appeler PdfReader.GetPageRef(int pageNum) pour chaque page du document d'origine et de les mettre en cache dans une carte (de référence->numpage).
Vous pouvez alors construire à distance "goto" liens en créant une distance goto PdfAction, et l'écriture que dans le lien d'annotation "A" (action) entrée, en enlevant tout ce qui était là avant (probablement un "Dest").
Je ne parle pas de C# très bien, je vais donc laisser la mise en œuvre effective de vous.
Étape 1.1 est là que je suis perdu et le PDF de référence ne vous aide pas beaucoup à cause de iTextSharp les objets et les pauvres de la documentation. Je peux trouver tous les
subtype = /link
les annotations, mais à partir de là, il existe différents types et leurs clés/les éléments sont différents. J'ai modifier et étendu la question ici: stackoverflow.com/questions/5579051/...OriginalL'auteur Mark Storer
Bien, basé sur ce que @Mark Storer voici quelques starter code. La première méthode permet de créer un exemple de fichier PDF avec 10 pages et quelques liens sur la première page de sauter autour de différentes parties de la PDF, de sorte que nous avons quelque chose à travailler avec. La deuxième méthode permet d'ouvrir les fichiers PDF créés dans la première méthode et de randonnées à travers chaque annotation à essayer de comprendre quelle page de l'annotation des liens et des sorties à la fenêtre de TRACE. Le code est en VB, mais devrait être facilement converti en C# si besoin. Son cibler iTextSharp 5.1.1.0.
Si je reçois une chance je pourrais essayer d'aller plus loin et fait de split et de rétablir le lien entre les choses, mais je n'ai pas le temps maintenant.
OriginalL'auteur Chris Haas
Cette fonction ci-dessous utilise iTextSharp:
Étape #4 est à insérer tout ce que la logique veux-tu en voilà... mettre à jour les liens, journal, etc.
Bonne chance.
OriginalL'auteur one.beat.consumer