Itextsharp - pdf permision edit

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

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.