當前位置: 首頁>>代碼示例>>C#>>正文


C# PdfReader.ConsolidateNamedDestinations方法代碼示例

本文整理匯總了C#中iTextSharp.text.pdf.PdfReader.ConsolidateNamedDestinations方法的典型用法代碼示例。如果您正苦於以下問題:C# PdfReader.ConsolidateNamedDestinations方法的具體用法?C# PdfReader.ConsolidateNamedDestinations怎麽用?C# PdfReader.ConsolidateNamedDestinations使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在iTextSharp.text.pdf.PdfReader的用法示例。


在下文中一共展示了PdfReader.ConsolidateNamedDestinations方法的12個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C#代碼示例。

示例1: testGetLink2

        public void testGetLink2()
        {
            string testFile = TestResourceUtils.GetResourceAsTempFile(TEST_RESOURCES_PATH, "getLinkTest2.pdf");
            string filename = testFile;
            PdfReader rdr = new PdfReader(new RandomAccessFileOrArray(filename), new byte[0]);
            // this one works: PdfReader rdr = new PdfReader(filename);
            rdr.ConsolidateNamedDestinations(); // does not help
            rdr.GetLinks(1);

            rdr.Close();
        }
開發者ID:smartleos,項目名稱:itextsharp,代碼行數:11,代碼來源:PdfReaderTest.cs

示例2: ProcessPdf

        void ProcessPdf(string path)
        {
            using (var reader = new PdfReader(path))
            {
                // need this call to parse page numbers
                reader.ConsolidateNamedDestinations();

                var bookmarks = ParseBookMarks(SimpleBookmark.GetBookmark(reader));
                for (int i = 0; i < bookmarks.Count; ++i)
                {
                    int page = bookmarks[i].PageNumberInteger;
                    int nextPage = i + 1 < bookmarks.Count
                        // if not top of page will be missing content
                        ? bookmarks[i + 1].PageNumberInteger - 1 

                        /* alternative is to potentially add redundant content:
                        ? bookmarks[i + 1].PageNumberInteger
                        */

                        : reader.NumberOfPages;
                    string range = string.Format("{0}-{1}", page, nextPage);

                    // DEMO!
                    if (i < 1000)
                    {
                        var outputPath = Path.Combine(OUTPUT_DIR, bookmarks[i].GetFileName());
                        using (var readerCopy = new PdfReader(reader))
                        {
                            var number = bookmarks[i].Number;
                            readerCopy.SelectPages(range);
                            using (FileStream stream = new FileStream(outputPath, FileMode.Create))
                            {
                                using (var document = new Document())
                                {
                                    using (var copy = new PdfCopy(document, stream))
                                    {
                                        document.Open();
                                        int n = readerCopy.NumberOfPages;
                                        for (int j = 0; j < n; )
                                        {
                                            copy.AddPage(copy.GetImportedPage(readerCopy, ++j));
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
開發者ID:kuujinbo,項目名稱:StackOverflow.iTextSharp,代碼行數:50,代碼來源:ExtractChapters.cs

示例3: DumpResults

        void DumpResults(string path)
        {
            using (var reader = new PdfReader(path))
            {
                // need this call to parse page numbers
                reader.ConsolidateNamedDestinations();

                var bookmarks = ParseBookMarks(SimpleBookmark.GetBookmark(reader));
                var sb = new StringBuilder();
                foreach (var bookmark in bookmarks)
                {
                    sb.AppendLine(string.Format(
                        "{0, -4}{1, -100}{2, -25}{3}",
                        bookmark.Number, bookmark.Title,
                        bookmark.PageNumberString, bookmark.PageNumberInteger
                    ));
                }
                File.WriteAllText(outputTextFile, sb.ToString());
            }
        }
開發者ID:kuujinbo,項目名稱:StackOverflow.iTextSharp,代碼行數:20,代碼來源:ExtractChapters.cs

示例4: CombineMultiplePDFs

        public void CombineMultiplePDFs(string[] fileNames, string outFile)
        {
            // step 1: creation of a document-object
            Document document = new Document();

            // step 2: we create a writer that listens to the document
            PdfCopy writer = new PdfCopy(document, new FileStream(outFile, FileMode.Create));
            if (writer == null)
            {
                return;
            }

            // step 3: we open the document
            document.Open();

            foreach (string fileName in fileNames)
            {
                // we create a reader for a certain document
                PdfReader reader = new PdfReader(fileName);
                reader.ConsolidateNamedDestinations();

                // step 4: we add content
                for (int i = 1; i <= reader.NumberOfPages; i++)
                {
                    PdfImportedPage page = writer.GetImportedPage(reader, i);
                    writer.AddPage(page);
                }

                PRAcroForm form = reader.AcroForm;
                if (form != null)
                {
                    writer.CopyAcroForm(reader);
                }

                reader.Close();
            }

            // step 5: we close the document and writer
            writer.Close();
            document.Close();
        }
開發者ID:rayanc,項目名稱:Pecuniaus,代碼行數:41,代碼來源:PdfHelper.cs

示例5: AddDocument

 public void AddDocument(PdfReader reader) {
     if (indirectMap.ContainsKey(reader)) {
         throw new ArgumentException(MessageLocalization.GetComposedMessage("document.1.has.already.been.added", reader.ToString()));
     }
     if (!reader.IsOpenedWithFullPermissions)
         throw new BadPasswordException(MessageLocalization.GetComposedMessage("pdfreader.not.opened.with.owner.password"));
     if (mergeFields) {
         reader.ConsolidateNamedDestinations();
         reader.ShuffleSubsetNames();
         for (int i = 1; i <= reader.NumberOfPages; i++) {
             PdfDictionary page = reader.GetPageNRelease(i);
             if (page != null && page.Contains(PdfName.ANNOTS)) {
                 PdfArray annots = page.GetAsArray(PdfName.ANNOTS);
                 if (annots != null) {
                     for (int j = 0; j < annots.Size; j++) {
                         PdfDictionary annot = annots.GetAsDict(j);
                         if (annot != null)
                             annot.Put(annotId, new PdfNumber(++annotIdCnt));
                     }
                 }
             }
         }
         fields.Add(reader.AcroFields);
         UpdateCalculationOrder(reader);
     }
     bool tagged = PdfStructTreeController.CheckTagged(reader);
     mergeFieldsInternalCall = true;
     for (int i = 1; i <= reader.NumberOfPages; i++) {
         AddPage(GetImportedPage(reader, i, tagged && this.tagged));
     }
     mergeFieldsInternalCall = false;
 }
開發者ID:,項目名稱:,代碼行數:32,代碼來源:

示例6: CombineMultiplePDFs

		public static void CombineMultiplePDFs(string[] fileNames, string outFile)
		{
			try
			{
				iTextSharp.text.Document document = new iTextSharp.text.Document();
				PdfCopy writer = new PdfCopy(document, new FileStream(outFile, FileMode.Create));
				if (writer == null)
				{
					return;
				}
				document.Open();

				foreach (string fileName in fileNames)
				{
					if (System.IO.File.Exists(fileName))
					{
						PdfReader reader = new PdfReader(fileName);
						reader.ConsolidateNamedDestinations();
						for (int i = 1; i <= reader.NumberOfPages; i++)
						{
							PdfImportedPage page = writer.GetImportedPage(reader, i);
							writer.AddPage(page);
						}

						PRAcroForm form = reader.AcroForm;
						if (form != null)
						{
							writer.CopyDocumentFields(reader);
						}
						reader.Close();
					}
				}
				writer.Close();
				document.Close();

			}
			catch
			{
				MessageBox.Show("Close the pdf file and try again.");
			}

		}
開發者ID:sanyak073,項目名稱:SurplusFundsEntry,代碼行數:42,代碼來源:MainWindow.xaml.cs

示例7: addFilePages

        private void addFilePages(Stream fileStream)
        {
            PdfReader reader = null;
            try
            {
                _fileNumber++;
                _attachmentsCount += copyAttachments(fileStream);
                fileStream = fileStream.ReopenForReading();
                reader = new PdfReader(fileStream);
                reader.ConsolidateNamedDestinations();

                addBookmark(reader);

                int numberOfPages = reader.NumberOfPages;
                for (int pageNumber = 1; pageNumber <= numberOfPages; pageNumber++)
                {
                    var size = reader.GetPageSizeWithRotation(pageNumber);
                    _document.SetPageSize(size);
                    _document.NewPage();
                    _overallPageNumber++;

                    var page = _writer.GetImportedPage(reader, pageNumber);
                    addContentToPage(reader, size, page);
                    _writer.AddPage(page);
                }

                var form = reader.AcroForm;
                if (form != null)
                    _writer.CopyAcroForm(reader);
            }
            finally
            {
                if (reader != null)
                    _writer.FreeReader(reader);
            }
        }
開發者ID:andycarmona,項目名稱:TimelyDepotUps,代碼行數:36,代碼來源:MergePdfDocuments.cs

示例8: PdfMerger

        public byte[] PdfMerger(List<byte[]> files)
        {
            int pageOffset = 0;
            int f = 0;

            Document document = null;
            PdfCopy writer = null;
            var ms = new MemoryStream();

            foreach (var file in files)
            {
                var reader = new PdfReader(file);
                reader.ConsolidateNamedDestinations();
                // we retrieve the total number of pages
                int n = reader.NumberOfPages;

                pageOffset += n;

                if (f == 0)
                {
                    // step 1: creation of a document-object
                    document = new Document(reader.GetPageSizeWithRotation(1));
                    // step 2: we create a writer that listens to the document
                    writer = new PdfCopy(document, ms);
                    // step 3: we open the document
                    document.Open();
                }
                // step 4: we add content
                for (int i = 0; i < n; )
                {
                    ++i;
                    if (writer != null)
                    {
                        PdfImportedPage page = writer.GetImportedPage(reader, i);
                        writer.AddPage(page);
                    }
                }
                PRAcroForm form = reader.AcroForm;
                if (form != null && writer != null)
                {
                    writer.CopyAcroForm(reader);
                }

                f++;
            }

            // step 5: we close the document
            if (document != null)
            {
                document.Close();
            }

            return ms.ToArray();
        }
開發者ID:ucdavis,項目名稱:Dogbert,代碼行數:54,代碼來源:PdfService.cs

示例9: Merge

        public static byte[] Merge(string[] documentPaths) {
            byte[] mergedDocument;

            using (MemoryStream memoryStream = new MemoryStream())
            using (Document document = new Document())
            {
                PdfSmartCopy pdfSmartCopy = new PdfSmartCopy(document, memoryStream);
                document.Open();

                foreach (string docPath in documentPaths)
                {
                    PdfReader reader = new PdfReader(docPath);
                    try
                    {
                        reader.ConsolidateNamedDestinations();
                        int numberOfPages = reader.NumberOfPages;
                        for (int page = 0; page < numberOfPages; )
                        {
                            PdfImportedPage pdfImportedPage = pdfSmartCopy.GetImportedPage(reader, ++page);
                            pdfSmartCopy.AddPage(pdfImportedPage);
                        }
                    }
                    finally
                    {
                        reader.Close();
                    }
                }

                document.Close();
                mergedDocument = memoryStream.ToArray();
            }

            return mergedDocument;
        }
開發者ID:newlysoft,項目名稱:itextsharp,代碼行數:34,代碼來源:PdfCopyTest.cs

示例10: AddDocument

 virtual public void AddDocument(PdfReader reader) {
     if (!document.IsOpen()) {
         throw new DocumentException(MessageLocalization.GetComposedMessage("the.document.is.not.open.yet.you.can.only.add.meta.information"));
     }
     if (indirectMap.ContainsKey(reader)) {
         throw new ArgumentException(MessageLocalization.GetComposedMessage("document.1.has.already.been.added", reader.ToString()));
     }
     if (!reader.IsOpenedWithFullPermissions)
         throw new BadPasswordException(MessageLocalization.GetComposedMessage("pdfreader.not.opened.with.owner.password"));
     if (mergeFields) {
         reader.ConsolidateNamedDestinations();
         reader.ShuffleSubsetNames();
         for (int i = 1; i <= reader.NumberOfPages; i++) {
             PdfDictionary page = reader.GetPageNRelease(i);
             if (page != null && page.Contains(PdfName.ANNOTS)) {
                 PdfArray annots = page.GetAsArray(PdfName.ANNOTS);
                 if (annots != null) {
                     for (int j = 0; j < annots.Size; j++) {
                         PdfDictionary annot = annots.GetAsDict(j);
                         if (annot != null)
                             annot.Put(annotId, new PdfNumber(++annotIdCnt));
                     }
                 }
             }
         }
         AcroFields acro = reader.AcroFields;
         // when a document with NeedAppearances is encountered, the flag is set
         // in the resulting document.
         bool needapp = !acro.GenerateAppearances;
         if (needapp)
             needAppearances = true;
         fields.Add(reader.AcroFields);
         UpdateCalculationOrder(reader);
     }
     bool tagged = this.tagged && PdfStructTreeController.CheckTagged(reader);
     mergeFieldsInternalCall = true;
     for (int i = 1; i <= reader.NumberOfPages; i++) {
         AddPage(GetImportedPage(reader, i, tagged));
     }
     mergeFieldsInternalCall = false;
 }
開發者ID:jagruti23,項目名稱:itextsharp,代碼行數:41,代碼來源:PdfCopy.cs

示例11: CopyDocumentFields

        /**
         * Copy document fields to a destination document.
         * @param reader a document where fields are copied from.
         * @throws DocumentException
         * @throws IOException
         */
        public virtual void CopyDocumentFields(PdfReader reader) {
            if (!document.IsOpen()) {
                throw new DocumentException(
                    MessageLocalization.GetComposedMessage("the.document.is.not.open.yet.you.can.only.add.meta.information"));
            }

            if (indirectMap.ContainsKey(reader)) {
                throw new ArgumentException(MessageLocalization.GetComposedMessage("document.1.has.already.been.added",
                    reader.ToString()));
            }

            if (!reader.IsOpenedWithFullPermissions)
                throw new BadPasswordException(MessageLocalization.GetComposedMessage("pdfreader.not.opened.with.owner.password"));

            if (!mergeFields)
                throw new ArgumentException(
                    MessageLocalization.GetComposedMessage(
                        "1.method.can.be.only.used.in.mergeFields.mode.please.use.addDocument", "copyDocumentFields"));

            indirects = new Dictionary<RefKey, IndirectReferences>();
            indirectMap[reader] = indirects;

            reader.ConsolidateNamedDestinations();
            reader.ShuffleSubsetNames();
            if (tagged && PdfStructTreeController.CheckTagged(reader)) {
                structTreeRootReference = (PRIndirectReference) reader.Catalog.Get(PdfName.STRUCTTREEROOT);
                if (structTreeController != null) {
                    if (reader != structTreeController.reader)
                        structTreeController.SetReader(reader);
                } else {
                    structTreeController = new PdfStructTreeController(reader, this);
                }
            }

            IList<PdfObject> annotationsToBeCopied = new List<PdfObject>();

            for (int i = 1; i <= reader.NumberOfPages; i++) {
                PdfDictionary page = reader.GetPageNRelease(i);
                if (page != null && page.Contains(PdfName.ANNOTS)) {
                    PdfArray annots = page.GetAsArray(PdfName.ANNOTS);
                    if (annots != null && annots.Size > 0) {
                        if (importedPages.Count < i)
                            throw new DocumentException(
                                MessageLocalization.GetComposedMessage("there.are.not.enough.imported.pages.for.copied.fields"));
                        indirectMap[reader][new RefKey(reader.pageRefs.GetPageOrigRef(i))] = new IndirectReferences(pageReferences[i - 1]);
                        for (int j = 0; j < annots.Size; j++) {
                            PdfDictionary annot = annots.GetAsDict(j);
                            if (annot != null) {
                                annot.Put(annotId, new PdfNumber(++annotIdCnt));
                                annotationsToBeCopied.Add(annots[j]);
                            }
                        }
                    }
                }
            }

            foreach (PdfObject annot in annotationsToBeCopied) {
                CopyObject(annot);
            }

            if (tagged && structTreeController != null)
                structTreeController.AttachStructTreeRootKids(null);

            AcroFields acro = reader.AcroFields;
            bool needapp = !acro.GenerateAppearances;
            if (needapp)
                needAppearances = true;
            fields.Add(acro);
            UpdateCalculationOrder(reader);
            structTreeRootReference = null;
        }
開發者ID:jagruti23,項目名稱:itextsharp,代碼行數:77,代碼來源:PdfCopy.cs

示例12: CombineMultiplePDFs

        // http://stackoverflow.com/questions/566899/is-there-a-straight-forward-way-to-append-one-pdf-doc-to-another-using-itextsharp
        public static bool CombineMultiplePDFs(string outFile, string[] fileNames)
        {
            int pageOffset = 0;
            int f = 0;

            Document document = null;
            PdfCopy writer = null;
            IList<Dictionary<string, object>> master = new List<Dictionary<string, object>>();
            while (f < fileNames.Length)
            {
                // we create a reader for a certain document
                PdfReader reader = new PdfReader(fileNames[f]);
                reader.ConsolidateNamedDestinations();
                // we retrieve the total number of pages
                int n = reader.NumberOfPages;
                IList<Dictionary<string, object>> bookmarks = SimpleBookmark.GetBookmark(reader);

                if (bookmarks != null)
                {
                    if (pageOffset != 0)
                    {
                        SimpleBookmark.ShiftPageNumbers(bookmarks, pageOffset, null);
                    }
                    foreach (Dictionary<string, object> dictionary in bookmarks)
                    {
                        master.Add(dictionary);
                    }
                }
                pageOffset += n;

                if (f == 0)
                {
                    // step 1: creation of a document-object
                    document = new Document(reader.GetPageSizeWithRotation(1));
                    // step 2: we create a writer that listens to the document
                    writer = new PdfCopy(document, new FileStream(outFile, FileMode.Create));
                    writer.ViewerPreferences = PdfWriter.PageModeUseOutlines;
                    // step 3: we open the document
                    document.Open();
                }
                // step 4: we add content
                for (int i = 0; i < n; )
                {
                    ++i;
                    if (writer != null)
                    {
                        PdfImportedPage page = writer.GetImportedPage(reader, i);
                        writer.AddPage(page);
                    }
                }
                PRAcroForm form = reader.AcroForm;
                if (form != null && writer != null)
                {
                    writer.CopyAcroForm(reader);
                }
                f++;
            }
            if (master.Count > 0 && writer != null)
            {
                writer.Outlines = master;
            }
            // step 5: we close the document
            if (document != null)
            {
                document.Close();
            }
            return true;
        }
開發者ID:tkim001,項目名稱:SystemOperationsEvaluations,代碼行數:69,代碼來源:PdfGenerator.cs


注:本文中的iTextSharp.text.pdf.PdfReader.ConsolidateNamedDestinations方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。