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); } }
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); } }
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(); }
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); } }
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); } }
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); } }
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); } }
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); } }