Itextsharp - pdf permision edit

Soyez le premier à donner votre avis sur cette source.

Vue 13 621 fois - Téléchargée 976 fois

Description

je cherchais comment modifier les Permissions sur un PDF. C'est chose faite. Voila ce que j'ai pu trouver comme réponse en parcourant la toile.

Ce petit bout de code permet d'illustrer comment modifier les permissions des utilisateurs sur un pdf avec l'assembly ITextSharp.

En réaliter avec ITextSharp on ne peut éditer un PDF mais seulement faire une copie a l'identique avec les nouvelles permissions.

Dans le Zip vous trouverez un petit programme pour tester la toute petite classe PDFEdit

Ne pas oublier de télécharger la DLL ITextSharp a cette adresse : http://sourceforge.net/projects/itextsharp/

Source / Exemple :


class PdfEdit
    {
        public PdfEdit()
        {

        }

        public enum permission
        {
            Assembly = PdfWriter.ALLOW_ASSEMBLY,
            Copy = PdfWriter.ALLOW_COPY,
            DegradedPrinting = PdfWriter.ALLOW_DEGRADED_PRINTING,
            FillIn = PdfWriter.ALLOW_FILL_IN,
            ModifyAnnotation = PdfWriter.ALLOW_MODIFY_ANNOTATIONS,
            ModifyContent = PdfWriter.ALLOW_MODIFY_CONTENTS,
            Printing = PdfWriter.ALLOW_PRINTING,
            ScreenReaders = PdfWriter.ALLOW_SCREENREADERS
        };

        public enum encryption
        {
            Standart_128 = PdfWriter.STANDARD_ENCRYPTION_128,
            Standart_40 = PdfWriter.STANDARD_ENCRYPTION_40
        };

        public static void PdfEditPermission(string SourcePdfFile, string TargetPdfFile, string Login, string Password, int[] Permission, int Encryption)
        {
            PdfReader _Reader = new PdfReader(SourcePdfFile); 

            int pageNumber = _Reader.NumberOfPages;

            Document _Document = new Document(_Reader.GetPageSizeWithRotation(1));
            PdfWriter writer = PdfWriter.GetInstance(_Document, new FileStream(TargetPdfFile, FileMode.Create));

            PdfEncryption(writer, Login, Password, Permission, Encryption);

            _Document.Open();

            PdfContentByte _ContentPDF = writer.DirectContent;
            PdfImportedPage _Page;
            int rotation = 0;

            for (int i = 1; i <= pageNumber; i++)
            {
                _Document.SetPageSize(_Reader.GetPageSizeWithRotation(i));

                _Document.NewPage();

                _Page = writer.GetImportedPage(_Reader, i);

                rotation = _Reader.GetPageRotation(i);

                if (rotation == 90 || rotation == 270)
                    _ContentPDF.AddTemplate(_Page, 0, -1f, 1f, 0, 0, _Reader.GetPageSizeWithRotation(i).Height);
                else
                    _ContentPDF.AddTemplate(_Page, 1f, 0, 0, 1f, 0, 0);
            }

            _Document.Close();
        }

        private static void PdfEncryption(PdfWriter writer, string Login, string Password, int[] bufferPermission, int Encryption)
        {
            int permission = 0;

            foreach (int i in bufferPermission)
            {
                permission |= (int)i;
            }

            writer.SetEncryption(Encryption, Login, Password, permission);
        }

    }

Conclusion :


Voici quelques liens qui m'ont été utiles :

Codes Sources

A voir également

Ajouter un commentaire

Commentaire

Messages postés
215
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
10 mars 2014

slt Zaltez, merci pour les site,
ta source m'a l'air classe et très utile
même sans commentaires ça se comprend,

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.