Пример #1
0
        public virtual void TestNeedAppearancesFalse()
        {
            String f1 = RESOURCES + "appearances1(needAppearancesFalse).pdf";
            String f2 = RESOURCES + "appearances2(needAppearancesFalse).pdf";
            String f3 = RESOURCES + "appearances3(needAppearancesFalse).pdf";
            String f4 = RESOURCES + "appearances4(needAppearancesFalse).pdf";

            Directory.CreateDirectory("PdfCopyTest/");
            FileStream outputPdfStream =
                new FileStream("PdfCopyTest/appearances(needAppearancesFalse).pdf", FileMode.Create);
            Document document = new Document();
            PdfCopy  copy     = new PdfCopy(document, outputPdfStream);

            copy.SetMergeFields();
            document.Open();
            foreach (String f in new String[] { f1, f2, f3, f4 })
            {
                PdfReader r = new PdfReader(f);
                copy.AddDocument(r);
            }
            copy.Close();
            CompareTool compareTool =
                new CompareTool("PdfCopyTest/appearances(needAppearancesFalse).pdf",
                                RESOURCES + "cmp_appearances(needAppearancesFalse).pdf");
            String errorMessage = compareTool.Compare("PdfCopyTest/", "diff");

            if (errorMessage != null)
            {
                Assert.Fail(errorMessage);
            }
        }
Пример #2
0
 public void Write(Stream stream)
 {
     using (ZipFile zip = new ZipFile())
     {
         using (MemoryStream ms = new MemoryStream())
         {
             using (var document = new Document())
             {
                 PdfReader reader1 = new PdfReader(DATASHEET);
                 PdfReader reader2 = new PdfReader(DATASHEET);
                 using (var copy = new PdfCopy(document, ms))
                 {
                     copy.SetMergeFields();
                     document.Open();
                     copy.AddDocument(reader1);
                     copy.AddDocument(reader2);
                 }
                 reader1.Close();
                 reader2.Close();
                 zip.AddEntry(RESULT, ms.ToArray());
             }
         }
         zip.AddFile(DATASHEET, "");
         zip.Save(stream);
     }
 }
Пример #3
0
        public virtual void TestFullCompression2()
        {
            Directory.CreateDirectory("PdfCopyTest/");
            String     outfile     = "PdfCopyTest/out-forms.pdf";
            String     first       = RESOURCES + "subscribe.pdf";
            String     second      = RESOURCES + "filled_form_1.pdf";
            FileStream out_        = new FileStream(outfile, FileMode.Create);
            PdfReader  reader      = new PdfReader(first);
            PdfReader  reader2     = new PdfReader(second);
            Document   pdfDocument = new Document();
            PdfCopy    pdfCopy     = new PdfCopy(pdfDocument, out_);

            pdfCopy.SetMergeFields();
            pdfCopy.SetFullCompression();
            pdfCopy.CompressionLevel = PdfStream.BEST_COMPRESSION;
            pdfDocument.Open();
            pdfCopy.AddDocument(reader);
            pdfCopy.AddDocument(reader2);
            pdfCopy.Close();
            reader.Close();
            reader2.Close();

            reader = new PdfReader("PdfCopyTest/out-forms.pdf");
            Assert.NotNull(reader.GetPageN(1));
            reader.Close();
        }
Пример #4
0
        public virtual void CopyFields1Test()
        {
            Document pdfDocument = new Document();

            Directory.CreateDirectory("PdfCopyTest/");
            PdfCopy copier = new PdfCopy(pdfDocument, new FileStream("PdfCopyTest/copyFields.pdf", FileMode.Create));

            copier.SetMergeFields();

            pdfDocument.Open();

            PdfReader readerMain         = new PdfReader(RESOURCES + "fieldsOn3-sPage.pdf");
            PdfReader secondSourceReader = new PdfReader(RESOURCES + "fieldsOn2-sPage.pdf");
            PdfReader thirdReader        = new PdfReader(RESOURCES + "appearances1.pdf");

            copier.AddDocument(readerMain);
            copier.CopyDocumentFields(secondSourceReader);
            copier.AddDocument(thirdReader);

            copier.Close();
            readerMain.Close();
            secondSourceReader.Close();
            thirdReader.Close();
            CompareTool compareTool  = new CompareTool();
            String      errorMessage = compareTool.CompareByContent("PdfCopyTest/copyFields.pdf", RESOURCES + "cmp_copyFields.pdf", "PdfCopyTest/", "diff");

            if (errorMessage != null)
            {
                Assert.Fail(errorMessage);
            }
        }
Пример #5
0
        public virtual void LargeFilePerformanceTest()
        {
            const string target = "PdfCopyTest/";
            const string output = "copyLargeFile.pdf";
            const string cmp    = "cmp_copyLargeFile.pdf";

            Directory.CreateDirectory(target);

            Stopwatch timer = new Stopwatch();

            timer.Start();

            PdfReader firstSourceReader  = new PdfReader(RESOURCES + "frontpage.pdf");
            PdfReader secondSourceReader = new PdfReader(RESOURCES + "large_pdf.pdf");

            Document document = new Document();

            PdfCopy copy = new PdfCopy(document, File.Create(target + output));

            copy.SetMergeFields();

            document.Open();
            copy.AddDocument(firstSourceReader);
            copy.AddDocument(secondSourceReader);

            copy.Close();
            document.Close();

            timer.Stop();
            Console.WriteLine(timer.ElapsedMilliseconds);

            CompareTool cmpTool      = new CompareTool();
            String      errorMessage = cmpTool.CompareByContent(target + output, RESOURCES + cmp, target, "diff");

            if (errorMessage != null)
            {
                Assert.Fail(errorMessage);
            }
        }
Пример #6
0
        public virtual void CopyFields3Test()
        {
            Document pdfDocument = new Document();

            Directory.CreateDirectory("PdfCopyTest/");
            PdfCopy copier = new PdfCopy(pdfDocument, new FileStream("PdfCopyTest/copyFields3.pdf", FileMode.Create));

            copier.SetMergeFields();
            pdfDocument.Open();

            PdfReader reader = new PdfReader(RESOURCES + "hello2_with_comments.pdf");

            copier.AddDocument(reader);
            copier.Close();
            CompareTool compareTool  = new CompareTool();
            String      errorMessage = compareTool.CompareByContent("PdfCopyTest/copyFields3.pdf", RESOURCES + "cmp_copyFields3.pdf", "PdfCopyTest/", "diff");

            if (errorMessage != null)
            {
                Assert.Fail(errorMessage);
            }
        }
Пример #7
0
        public virtual void CopyFields4Test()
        {
            string target = "PdfCopyTest/";

            Directory.CreateDirectory(target);
            const string outfile   = "copyFields4.pdf";
            const string inputFile = "link.pdf";

            Document     document = new Document();
            MemoryStream stream   = new MemoryStream();

            PdfWriter.GetInstance(document, stream);
            Font font = new Font(BaseFont.CreateFont(RESOURCES + "fonts/georgia.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED), 9);

            document.Open();
            document.Add(new Phrase("text", font));
            document.Close();

            Document pdfDocument = new Document();
            PdfCopy  copier      = new PdfCopy(pdfDocument, new FileStream(target + outfile, FileMode.Create));

            copier.SetMergeFields();
            pdfDocument.Open();

            PdfReader reader1 = new PdfReader(RESOURCES + inputFile);
            PdfReader reader2 = new PdfReader(stream.ToArray());

            copier.AddDocument(reader1);
            copier.AddDocument(reader2);
            copier.Close();
            CompareTool cmpTool      = new CompareTool();
            string      errorMessage = cmpTool.CompareByContent(target + outfile, RESOURCES + "cmp_" + outfile, target, "diff");

            if (errorMessage != null)
            {
                Assert.Fail(errorMessage);
            }
        }
Пример #8
0
        private void AppendMain(PdfReader reader, string title, PageRange[] pageRanges, PdfConcatenatorOption option)
        {
            bool addOutlines  = option.AddOutlines;
            bool copyOutlines = option.CopyOutlines;

            int i;

            bool[] appendOrNots = new bool[reader.NumberOfPages + 1];
            foreach (var pr in pageRanges)
            {
                for (int j = pr.StartPage; j <= pr.EndPage; j++)
                {
                    appendOrNots[j] = true;
                }
            }

            int theFirstPage = 0;

            for (i = 1; i <= reader.NumberOfPages; i++)
            {
                if (appendOrNots[i])
                {
                    theFirstPage = i;
                    break;
                }
            }
            if (theFirstPage == 0)
            {
                // There is no append paes.
                return;
            }

            if (!opened)
            {
                opened   = true;
                document = new Document(reader.GetPageSizeWithRotation(theFirstPage));
                writer   = new PdfCopy(document, outStream);
                writer.SetMergeFields();

                if (ownerPassword != null)
                {
                    byte[] bytesUserPassword = userPassword == null ? null : Encoding.ASCII.GetBytes(userPassword);
                    writer.SetEncryption(bytesUserPassword, Encoding.ASCII.GetBytes(ownerPassword), permissions, encryptionStrength);
                }
                writer.ViewerPreferences = this.viewerPreference;

                document.Open();
            }

            if (bookmarks == null)
            {
                if (addOutlines || copyOutlines)
                {
                    bookmarks = new List <Dictionary <string, object> >();
                }
            }
            if (bookmarks != null)
            {
                Dictionary <string, object> m = null;
                if (addOutlines)
                {
                    m           = new Dictionary <string, object>();
                    m["Title"]  = title;
                    m["Action"] = "GoTo";
                    m["Page"]   = currPageNum.ToString() + " " + option.FittingStyle;
                }
                if (copyOutlines)
                {
                    var cpbookmarks = SimpleBookmark.GetBookmark(reader);

                    if (cpbookmarks != null)
                    {
                        int[] elimPages  = new int[2];
                        int[] shiftPages = new int[2];
                        shiftPages[1] = reader.NumberOfPages;
                        for (int pageIndex = reader.NumberOfPages; pageIndex > 0; --pageIndex)
                        {
                            if (!appendOrNots[pageIndex])
                            {
                                elimPages[0]  = elimPages[1] = pageIndex;
                                shiftPages[0] = pageIndex + 1;
                                SimpleBookmark.EliminatePages(cpbookmarks, elimPages);
                                SimpleBookmark.ShiftPageNumbers(cpbookmarks, -1, shiftPages);
                            }
                        }
                        SimpleBookmark.ShiftPageNumbers(cpbookmarks, currPageNum - 1, null);

                        if (m == null)
                        {
                            foreach (var c in cpbookmarks)
                            {
                                bookmarks.Add(c);
                            }
                        }
                        else
                        {
                            m["Kids"] = cpbookmarks;
                        }
                    }
                }
                if (m != null)
                {
                    bookmarks.Add(m);
                }
            }

            {
                var pages = new List <int>();
                for (int ii = 1; ii < appendOrNots.Length; ii++)
                {
                    if (appendOrNots[ii])
                    {
                        pages.Add(ii);
                        currPageNum++;
                    }
                }
                reader.SelectPages(pages);
                writer.AddDocument(reader);
            }
        }