// POST: api/Annotations
        public void Post([FromBody]Annotations value)
        {
            DocumentRepository documentData = new DocumentRepository();
            CurrentDocuments currentDocuments = documentData.GetCurrentDocumentPathPDF(Utility.GetUserName());
            string [] pathParts = currentDocuments.PathToCurrentPDFDocument.Split('\\');
            string tempPDFPath = string.Empty;

            for (int i = 0; i < pathParts.Length - 1 ; i++)
            {
                tempPDFPath = tempPDFPath + pathParts[i] + "\\";
            }

            tempPDFPath = tempPDFPath + "temp" + pathParts[pathParts.Length -1];

            System.IO.File.Copy(currentDocuments.PathToCurrentPDFDocument, tempPDFPath,true);
            try
            {

                PDFDoc in_doc = new PDFDoc(tempPDFPath);
                {
                    in_doc.InitSecurityHandler();

                    //string str = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?><xfdf xmlns=\"http://ns.adobe.com/xfdf\" xml:space=\"preserve\"><square subject=\"Rectangle\" page=\"0\" name=\"cf4d2e58-e9c5-2a58-5b4d-9b4b1a330e45\" title=\"user\" creationdate=\"D:20120827112326-07'00'\" date=\"D:20120827112326-07'00'\" rect=\"227.7814207650273,597.6174863387978,437.07103825136608,705.0491803278688\" color=\"#000000\" interior-color=\"#FFFF00\" flags=\"print\" width=\"1\"><popup flags=\"print,nozoom,norotate\" open=\"no\" page=\"0\" rect=\"0,792,0,792\" /></square></xfdf>";
                    string str = value.Data;

                    using (FDFDoc fdoc = new FDFDoc(FDFDoc.CreateFromXFDF(str)))
                    {
                        in_doc.FDFMerge(fdoc);
                        in_doc.Save(currentDocuments.PathToCurrentPDFDocument, SDFDoc.SaveOptions.e_linearized);
                    }
                }
            }
            catch (PDFNetException e)
            {
                Console.WriteLine(e.Message);
            }
        }
        // POST: api/Annotations
        public void Post([FromBody]Annotations value)
        {
            DocumentRepository documentData = new DocumentRepository();
            CurrentDocuments currentDocuments = documentData.GetCurrentDocumentPathPdf(Utility.GetUserName());
            string [] pathParts = currentDocuments.PathToCurrentPdfDocument.Split('\\');
            string tempPdfPath = string.Empty;

            for (int i = 0; i < pathParts.Length - 1 ; i++)
            {
                tempPdfPath = tempPdfPath + pathParts[i] + "\\";
            }

            tempPdfPath = tempPdfPath + "temp" + pathParts[pathParts.Length -1];

            System.IO.File.Copy(currentDocuments.PathToCurrentPdfDocument, tempPdfPath,true);
            try
            {
                PDFDoc inDoc = new PDFDoc(tempPdfPath);
                {
                   inDoc.InitSecurityHandler();

                    string str = value.Data;

                    using (FDFDoc fdoc = new FDFDoc(FDFDoc.CreateFromXFDF(str)))
                    {
                        inDoc.FDFMerge(fdoc);
                        inDoc.FlattenAnnotations();
                        inDoc.Save(currentDocuments.PathToCurrentPdfDocument, SDFDoc.SaveOptions.e_incremental);
                        //inDoc.Save(currentDocuments.PathToCurrentPdfDocument, SDFDoc.SaveOptions.e_linearized);
                    }
                }
            }
            catch (PDFNetException e)
            {
                Console.WriteLine(e.Message);
            }
        }
        /// <summary>
        /// Genera la factura de la reserva id pasada como parametro, si la factura pertenece al socio y si ha pagado la reserva, y la devuelve al socio
        /// </summary>
        /// <param name="id">id de la reserva para la cual mostrar la factura</param>
        /// <returns>pdf con la factura si socio, sino redirige a /Home/index o /Admin/index dependiendo si es admin o no logueado</returns>
        public ActionResult VerFacturaReserva(int? id)
        {
            if (isSocio())
            {
                reservas reserva = db.reservas.Find(id);
                if (reserva == null)
                {
                    addError("No tiene permisos para visualizar esta reserva");
                    saveErrors();
                    return RedirectToAction("MisReservas", "Socio");
                }
                string socio_id = (string)Session["UserID"];
                if (reserva.socios.id != socio_id)
                {
                    addError("No tiene permisos para visualizar esta reserva");
                    saveErrors();
                    return RedirectToAction("MisReservas", "Socio");
                }
                if (reserva.pagado == false)
                {
                    addError("La factura no puede ser visualizada hasta que la reserva sea abonada");
                    saveErrors();
                    return RedirectToAction("MisReservas", "Socio");
                }

                // Creacion del pdf a partir de los datos xml en la BBDD
                PDFNet.Initialize();

                // Ruta relavita a las carpetas que contienen los archivos
                string input_path = "c:/Google Drive/PFC/pdf/";
                string output_path = "c:/Google Drive/PFC/pdf/Output/";
                try
                {
                    // Juntar XFDF desde el xml string
                    PDFDoc in_doc = new PDFDoc(input_path + "factura.pdf");
                    {
                        in_doc.InitSecurityHandler();

                        //Debug.WriteLine("Juntamos XFDF string con el PDF...");

                        //reservas reserva = db.reservas.Find(id);
                        string str = reserva.facturas.xml_factura;
                        //Debug.WriteLine(str);

                        using (FDFDoc fdoc = new FDFDoc(FDFDoc.CreateFromXFDF(str)))
                        {
                            in_doc.FDFMerge(fdoc);
                            // Iniciamos los permisos del pdf, para que no se pueda editar
                            StdSecurityHandler newHandler = new StdSecurityHandler();
                            newHandler.SetPermission(SecurityHandler.Permission.e_doc_modify, false);
                            newHandler.SetPermission(SecurityHandler.Permission.e_fill_forms, false);
                            newHandler.SetPermission(SecurityHandler.Permission.e_extract_content, false);
                            newHandler.SetPermission(SecurityHandler.Permission.e_mod_annot, false);

                            in_doc.SetSecurityHandler(newHandler);
                            in_doc.Save(output_path + "factura_modificada.pdf", SDFDoc.SaveOptions.e_linearized);
                            Debug.WriteLine("Juntado completado.");
                        }
                    }
                }
                catch (PDFNetException e)
                {
                    Debug.WriteLine(e.Message);
                }

                return File("c:/Google drive/PFC/pdf/output/factura_modificada.pdf", "application/pdf");
            }
            else
                return RedirectToAction("Index", isAdmin() ? "Admin" : "Home");
        }
Exemple #4
0
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        static void Main(string[] args)
        {
            PDFNet.Initialize();

            // Relative path to the folder containing test files.
            string input_path  = "../../TestFiles/";
            string output_path = "../../TestFiles/Output/";

            // Example 1)
            // Iterate over all form fields in the document. Display all field names.
            try
            {
                using (PDFDoc doc = new PDFDoc(input_path + "form1.pdf"))
                {
                    doc.InitSecurityHandler();

                    FieldIterator itr;
                    for (itr = doc.GetFieldIterator(); itr.HasNext(); itr.Next())
                    {
                        Console.WriteLine("Field name: {0:s}", itr.Current().GetName());
                        Console.WriteLine("Field partial name: {0:s}", itr.Current().GetPartialName());

                        Console.Write("Field type: ");
                        Field.Type type = itr.Current().GetType();
                        switch (type)
                        {
                        case Field.Type.e_button:
                            Console.WriteLine("Button"); break;

                        case Field.Type.e_text:
                            Console.WriteLine("Text"); break;

                        case Field.Type.e_choice:
                            Console.WriteLine("Choice"); break;

                        case Field.Type.e_signature:
                            Console.WriteLine("Signature"); break;
                        }

                        Console.WriteLine("------------------------------");
                    }

                    Console.WriteLine("Done.");
                }
            }
            catch (PDFNetException e)
            {
                Console.WriteLine(e.Message);
            }

            // Example 2) Import XFDF into FDF, then merge data from FDF into PDF
            try
            {
                // XFDF to FDF
                // form fields
                Console.WriteLine("Import form field data from XFDF to FDF.");

                FDFDoc fdf_doc1 = new FDFDoc(FDFDoc.CreateFromXFDF(input_path + "form1_data.xfdf"));
                fdf_doc1.Save(output_path + "form1_data.fdf");

                // annotations
                Console.WriteLine("Import annotations from XFDF to FDF.");

                FDFDoc fdf_doc2 = new FDFDoc(FDFDoc.CreateFromXFDF(input_path + "form1_annots.xfdf"));
                fdf_doc2.Save(output_path + "form1_annots.fdf");

                // FDF to PDF
                // form fields
                Console.WriteLine("Merge form field data from FDF.");

                using (PDFDoc doc = new PDFDoc(input_path + "form1.pdf"))
                {
                    doc.InitSecurityHandler();
                    doc.FDFMerge(fdf_doc1);

                    // To use PDFNet form field appearance generation instead of relying on
                    // Acrobat, uncomment the following two lines:
                    // doc.RefreshFieldAppearances();
                    // doc.GetAcroForm().Put("NeedAppearances", Obj.CreateBool(false));

                    doc.Save(output_path + "form1_filled.pdf", SDFDoc.SaveOptions.e_linearized);

                    // annotations
                    Console.WriteLine("Merge annotations from FDF.");

                    doc.FDFMerge(fdf_doc2);
                    doc.Save(output_path + "form1_filled_with_annots.pdf", SDFDoc.SaveOptions.e_linearized);

                    Console.WriteLine("Done.");
                }
            }
            catch (PDFNetException e)
            {
                Console.WriteLine(e.Message);
            }

            // Example 3) Extract data from PDF to FDF, then export FDF as XFDF
            try
            {
                // PDF to FDF
                using (PDFDoc in_doc = new PDFDoc(output_path + "form1_filled_with_annots.pdf"))
                {
                    in_doc.InitSecurityHandler();

                    // form fields only
                    Console.WriteLine("Extract form fields data to FDF.");

                    FDFDoc doc_fields = in_doc.FDFExtract(PDFDoc.ExtractFlag.e_forms_only);
                    doc_fields.SetPdfFileName("../form1_filled_with_annots.pdf");
                    doc_fields.Save(output_path + "form1_filled_data.fdf");

                    // annotations only
                    Console.WriteLine("Extract annotations to FDF.");

                    FDFDoc doc_annots = in_doc.FDFExtract(PDFDoc.ExtractFlag.e_annots_only);
                    doc_annots.SetPdfFileName("../form1_filled_with_annots.pdf");
                    doc_annots.Save(output_path + "form1_filled_annot.fdf");

                    // both form fields and annotations
                    Console.WriteLine("Extract both form fields and annotations to FDF.");

                    FDFDoc doc_both = in_doc.FDFExtract(PDFDoc.ExtractFlag.e_both);
                    doc_both.SetPdfFileName("../form1_filled_with_annots.pdf");
                    doc_both.Save(output_path + "form1_filled_both.fdf");

                    // FDF to XFDF
                    // form fields
                    Console.WriteLine("Export form field data from FDF to XFDF.");

                    doc_fields.SaveAsXFDF(output_path + "form1_filled_data.xfdf");

                    // annotations
                    Console.WriteLine("Export annotations from FDF to XFDF.");

                    doc_annots.SaveAsXFDF(output_path + "form1_filled_annot.xfdf");

                    // both form fields and annotations
                    Console.WriteLine("Export both form fields and annotations from FDF to XFDF.");

                    doc_both.SaveAsXFDF(output_path + "form1_filled_both.xfdf");

                    Console.WriteLine("Done.");
                }
            }
            catch (PDFNetException e)
            {
                Console.WriteLine(e.Message);
            }

            // Example 4) Merge/Extract XFDF into/from PDF
            try
            {
                // Merge XFDF from string
                PDFDoc in_doc = new PDFDoc(input_path + "numbered.pdf");
                {
                    in_doc.InitSecurityHandler();

                    Console.WriteLine("Merge XFDF string into PDF.");

                    string str = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?><xfdf xmlns=\"http://ns.adobe.com/xfdf\" xml:space=\"preserve\"><square subject=\"Rectangle\" page=\"0\" name=\"cf4d2e58-e9c5-2a58-5b4d-9b4b1a330e45\" title=\"user\" creationdate=\"D:20120827112326-07'00'\" date=\"D:20120827112326-07'00'\" rect=\"227.7814207650273,597.6174863387978,437.07103825136608,705.0491803278688\" color=\"#000000\" interior-color=\"#FFFF00\" flags=\"print\" width=\"1\"><popup flags=\"print,nozoom,norotate\" open=\"no\" page=\"0\" rect=\"0,792,0,792\" /></square></xfdf>";

                    using (FDFDoc fdoc = new FDFDoc(FDFDoc.CreateFromXFDF(str)))
                    {
                        in_doc.FDFMerge(fdoc);
                        in_doc.Save(output_path + "numbered_modified.pdf", SDFDoc.SaveOptions.e_linearized);
                        Console.WriteLine("Merge complete.");
                    }

                    // Extract XFDF as string
                    Console.WriteLine("Extract XFDF as a string.");
                    FDFDoc fdoc_new = in_doc.FDFExtract(PDFDoc.ExtractFlag.e_both);
                    string XFDF_str = fdoc_new.SaveAsXFDF();
                    Console.WriteLine("Extracted XFDF: ");
                    Console.WriteLine(XFDF_str);
                    Console.WriteLine("Extract complete.");
                }
            }
            catch (PDFNetException e)
            {
                Console.WriteLine(e.Message);
            }

            // Example 5) Read FDF files directly
            try
            {
                FDFDoc           doc = new FDFDoc(output_path + "form1_filled_data.fdf");
                FDFFieldIterator itr = doc.GetFieldIterator();
                for (; itr.HasNext(); itr.Next())
                {
                    Console.WriteLine("Field name: {0:s}", itr.Current().GetName());
                    Console.WriteLine("Field partial name: {0:s}", itr.Current().GetPartialName());
                    Console.WriteLine("------------------------------");
                }

                Console.WriteLine("Done.");
            }
            catch (PDFNetException e)
            {
                Console.WriteLine(e.Message);
            }

            // Example 6) Direct generation of FDF.
            try
            {
                FDFDoc doc = new FDFDoc();

                // Create new fields (i.e. key/value pairs).
                doc.FieldCreate("Company", (int)Field.Type.e_text, "PDFTron Systems");
                doc.FieldCreate("First Name", (int)Field.Type.e_text, "John");
                doc.FieldCreate("Last Name", (int)Field.Type.e_text, "Doe");
                // ...

                // doc.SetPdfFileName("mydoc.pdf");
                doc.Save(output_path + "sample_output.fdf");
                Console.WriteLine("Done. Results saved in sample_output.fdf");
            }
            catch (PDFNetException e)
            {
                Console.WriteLine(e.Message);
            }
        }