how to get Tags for after merged pdf

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

how to get Tags for after merged pdf

Rajagopal
i have multiple .pdf. successfully merged one pdf file with bookmark. but missing only Tags in merged pdf.
 so any one know about please suggest.
 
Problem: Tags missing.




Code



using System;
using System.Collections.Generic;
using System.Text;
using iTextSharp;
using iTextSharp.text.pdf;
using iTextSharp.text;
using System.IO;
using System.Text.RegularExpressions;
using System.Collections;
using System.Linq;
using GemBox.Pdf;
// PDFTron DLL reference
//using pdftron;
//using pdftron.Common;
//using pdftron.Filters;
//using pdftron.SDF;
//using pdftron.PDF;
//using pdftron.FDF;
//using Syncfusion.Licensing;
//using Syncfusion.Lic;
//using ceTe.DynamicPDF.Merger;

/*
   Tags            Date        Author         Description
*---------------------------------------------------------------------------------------------
 PDFMG09012020   09012020     Rajagopal J     Merge multiple pdf into single pdf with bookmark

*---------------------------------------------------------------------------------------------
 */

namespace pdfMergewithTag
{
    class Program
    {
        static void Main(string[] args)
        {
            //Declare Variable
            string output_pdfpath = null;
            string[] input_pdfpath = null;

            //Source path
            input_pdfpath = Directory.GetFiles(@"D:\DirectPDF\Sivaprasath");

            //Get random filename value
            DateTime tempTime = DateTime.Now;
            String datetemp = tempTime.ToString("ddMMyyyyhhss");

            //Destination path;
            output_pdfpath = @"D:\DirectPDF\MergeFile\Mergedfile_" + datetemp + ".pdf";

            //Method Creation for pass value source path and destination path
            pdfMergeWithBookmark.MergePdfFiles(output_pdfpath, input_pdfpath);
            //MergeFilesTem(output_pdfpath, input_pdfpath);
           




            ////License
            //ComponentInfo.SetLicense("FREE-LIMITED-KEY");
            //GemboxPdf.gemBox(output_pdfpath, input_pdfpath);

     

    }
}
}



 public static void MergePdfFiles(string outputPdf, string[] sourcePdfs)
        {
            try
            {
               
                PdfReader reader = null;
                Document document = new Document(PageSize.A4);
                PdfSmartCopy pdfCpy = null;
                 //PdfACopy(iTextSharp.text.Document, System.IO.Stream, iTextSharp.text.pdf.PdfAConformanceLevel)
               // PdfWriter pw=PdfWriter.GetInstance(document,new FileStream(outputPdf,FileMode.Create));
                //PdfContentByte pdfcb = pw.DirectContent;


               // PdfDocument doc = new PdfDocument();
               
                PdfImportedPage page = null;
                //PdfTemplate pdftem = null;
             // PdfCopy pdfCpy = null;
             // PdfCopyForms pdfCpy1 = null;
                int n = 0;
                int totalPages = 0;
                int page_offset = 0;

                //var sourcePdfs = from file in sourcepdf
                //                orderby file ascending
                //                select file;

                //Old Code
                // ArrayList bookmarks = new ArrayList();
                List<Dictionary<string, object>> bookmarks = new List<Dictionary<string, object>>();
                List<Dictionary<string, object>> tags = new List<Dictionary<string, object>>();
                //Old Code
                //ArrayList tempBookmarks;
                IList<Dictionary<string, object>> tempBookmarks;
                IList<Dictionary<string, object>> tempTags;

                for (int i = 0; i <= sourcePdfs.GetUpperBound(0); i++)
                {
                    reader = new PdfReader(sourcePdfs[i]);

                    //bool isTagged = reader.IsTagged();

                 //   var metadeta = reader.Catalog;

                    n = reader.NumberOfPages;

                    ////New Code
                    //PdfDictionary pdfDict = reader.GetPageN(n);

                    reader.ConsolidateNamedDestinations();
                    tempBookmarks = SimpleBookmark.GetBookmark(reader);

                    tempTags =

                    if (i == 0)
                    {
                        document = new iTextSharp.text.Document(reader.GetPageSizeWithRotation(1));
                     
                        //pdfCpy = new PdfCopy(document, new FileStream(outputPdf, FileMode.Create));
                       pdfCpy = new PdfSmartCopy(document,new FileStream(outputPdf, FileMode.Create));

                       //pdfCpy1 = new PdfCopyForms(new FileStream(outputPdf+"form", FileMode.Create));
                       
                        //bool tagged = reader.IsTagged();

                        //if (tagged)
                        //    pdfCpy.SetTagged(i);
                        //var metadeta = reader.Catalog;

                       
                       

                        document.Open();
                        SimpleBookmark.ShiftPageNumbers(tempBookmarks, page_offset, null);

                        page_offset += n;
                        if (tempBookmarks != null)
                            bookmarks.AddRange(tempBookmarks);
                           
                        //  MessageBox.Show(n.ToString());
                        totalPages = n;
                    }
                    else
                    {

                        SimpleBookmark.ShiftPageNumbers(tempBookmarks, page_offset,null);
                        //tags.Add(
                       
                        if (tempBookmarks != null)
                            bookmarks.AddRange(tempBookmarks);

                        page_offset += n;
                        totalPages += n;
                    }
                    //structTreeController
                    // bool tagged = PdfStructTreeController.CheckTagged(reader);
                    //mergeFieldsInternalCall = true;

                    for (int j = 1; j <= n; j++)
                    {
                        page = pdfCpy.GetImportedPage(reader, j);
                        // pdfCpy.AddPage(pdfCpy.GetImportedPage(reader, j,keepTaggedPdfStructure));
                        pdfCpy.AddPage(page);
                        // pdfCpy.SetTagged();
                    }

                }
               
                pdfCpy.Outlines = bookmarks;
                document.Close();
                //bool tagged = reader.IsTagged();

                //if (tagged)
                //    pdfCpy.SetTagged();
                //var metadeta = reader.Catalog;
            }
            catch (Exception ex)
            {
                throw new ApplicationException(ex.Message, ex);
            }
        }
        #endregion Merge pdf method Start


        //public static bool keepTaggedPdfStructure { get; set; }
    }
Reply | Threaded
Open this post in threaded view
|

Re: how to get Tags for after merged pdf

Rajagopal
i got it solution for After merged PDF Document with Tags.
Reply | Threaded
Open this post in threaded view
|

Re: how to get Tags for after merged pdf

Rajagopal
any one need solution for PDF merge with Tags Please call me  7358680681