public static void ExtractPage(string pdfFilePath, string fileDest, int pageNumber) { using (PdfReader reader = new PdfReader(pdfFilePath)) { Document document = new Document(); PdfCopy copy = new PdfCopy(document, new FileStream(fileDest, FileMode.Create)); document.Open(); copy.AddPage(copy.GetImportedPage(reader, pageNumber)); document.Close(); } }
public void MergeDocument() { List <string> files = new List <string>(); DirectoryInfo directoryInfo = new DirectoryInfo(@"C:\PDFGenerator"); foreach (var file in directoryInfo.GetFiles()) { files.Add(file.FullName); } PdfReader reader = null; iTextSharp.text.Document sourceDocument = null; PdfCopy pdfCopyProvider = null; PdfImportedPage importedPage; string outputPdfPath = @"C:\PDFGenerator\newFile.pdf"; sourceDocument = new iTextSharp.text.Document(); pdfCopyProvider = new PdfCopy(sourceDocument, new System.IO.FileStream(outputPdfPath, System.IO.FileMode.Create)); sourceDocument.Open(); try { foreach (string file in files) { int pages = get_pageCcount(file); reader = new PdfReader(file); for (int i = 1; i <= pages; i++) { importedPage = pdfCopyProvider.GetImportedPage(reader, i); pdfCopyProvider.AddPage(importedPage); } reader.Close(); } sourceDocument.Close(); } catch (Exception ex) { throw ex; } }
/// <summary> /// 将生成的所有子PDF文件合并为一个PDF文件 /// </summary> /// <param name="tif_pdf_directory">存储pdf/tif文件路径的字典</param> public void All_TIF_PDF(Dictionary <string, string> tif_pdf_directory) { Document document = null; string new_pdf_path = tif_pdf_path + "\\" + right_notice_bean.Right_notice_file_name + ".pdf";//合并后的PDF路径 try { string first_pdf_path = ""; foreach (string value in tif_pdf_directory.Values) { first_pdf_path = value; break; } document = new Document(new PdfReader(first_pdf_path).GetPageSize(1)); PdfCopy copy = new PdfCopy(document, new FileStream(new_pdf_path, FileMode.Create)); document.Open(); foreach (string value in tif_pdf_directory.Values) { PdfReader reader = new PdfReader(value); int n = reader.NumberOfPages; for (int j = 1; j <= n; j++) { document.NewPage(); PdfImportedPage page = copy.GetImportedPage(reader, j); copy.AddPage(page); } } } catch (Exception e) { throw new Exception("All_TIF_PDF异常\r\n" + e.Message); } finally { if (document != null) { document.Close(); } //将生成的子PDF文件删除 if (tif_pdf_directory.Count > 0) { foreach (string value in tif_pdf_directory.Values) { new FileInfo(value).Delete(); } } } }
public FileStreamResult PrintFormats(int idFormat, string RecordId) { if (!_tokenManager.GenerateToken()) return null; _IGeneratePDFApiConsumer.SetAuthHeader(_tokenManager.Token); _ISpartan_FormatRelatedApiConsumer.SetAuthHeader(_tokenManager.Token); MemoryStream ms = new MemoryStream(); //Buscar los Formatos Relacionados var relacionados = _ISpartan_FormatRelatedApiConsumer.ListaSelAll(0, 5000, "Spartan_Format_Related.FormatId = " + idFormat, "").Resource.Spartan_Format_Relateds.OrderBy(r => r.Order).ToList(); if (relacionados.Count > 0) { var outputDocument = new iTextSharp.text.Document(); var writer = new PdfCopy(outputDocument, ms); outputDocument.Open(); foreach (var spartan_Format_Related in relacionados) { var bytePdf = _IGeneratePDFApiConsumer.GeneratePDF(Convert.ToInt32(spartan_Format_Related.FormatId_Related), RecordId).Resource; var reader = new PdfReader(bytePdf); for (var j = 1; j <= reader.NumberOfPages; j++) { writer.AddPage(writer.GetImportedPage(reader, j)); } writer.FreeReader(reader); reader.Close(); } writer.Close(); outputDocument.Close(); var allPagesContent = ms.GetBuffer(); ms.Flush(); } else { var bytePdf = _IGeneratePDFApiConsumer.GeneratePDF(idFormat, RecordId); ms.Write(bytePdf.Resource, 0, bytePdf.Resource.Length); } Response.ContentType = "application/pdf"; Response.AddHeader("content-disposition", "attachment;filename=Formatos.pdf"); Response.Buffer = true; Response.Clear(); Response.OutputStream.Write(ms.GetBuffer(), 0, ms.GetBuffer().Length); Response.OutputStream.Flush(); Response.End(); return new FileStreamResult(Response.OutputStream, "application/pdf"); }
/// <summary> /// リスト内のPDFを結合しPDFを作成する /// http://zero0nine.com/archives/2866 /// </summary> /// <param name="outPdfPath"> /// 結合後のPDFファイルパス(フルパス) /// </param> /// <param name="pdfList"> /// 結合対象のPDFファイルパスを格納したリスト /// </param> /// <returns> /// true:正常 /// false:異常 /// </returns> private bool JoinPdf(string outPdfPath, List <string> pdfList) { bool ret = true; Document joinedDoc = null; PdfCopy pdfCopy = null; try { joinedDoc = new Document(); pdfCopy = new PdfCopy(joinedDoc, new FileStream(outPdfPath, FileMode.Create)); joinedDoc.Open(); /// 出力するPDFのプロパティを設定 //objITextDoc.AddKeywords("キーワードです。"); //objITextDoc.AddAuthor("zero0nine.com"); //objITextDoc.AddTitle("結合したPDFファイルです。"); //objITextDoc.AddCreator("PDFファイル結合くん"); //objITextDoc.AddSubject("結合したPDFファイル"); /// ソートが必要ない場合は、コメント //pdfList.Sort(); /// 結合対象ファイル分ループ pdfList.ForEach(list => { Debug.WriteLine(list); /// 結合元のPDFファイル読込 PdfReader pdfReader = new PdfReader(list); /// 結合元のPDFファイルを追加(全ページ) pdfCopy.AddDocument(pdfReader); pdfReader.Close(); }); } catch (Exception exp) { Debug.WriteLine(exp.Message); ret = false; } finally { joinedDoc.Close(); pdfCopy.Close(); } return(ret); }
/// <summary> /// Unisce gli stream pdf contenuti nella lista passata in un unico stream pdf /// </summary> /// <param name="files">lista stream pdf</param> /// <returns></returns> public static byte[] MergePDFs(System.Collections.Generic.List <byte[]> files) { MemoryStream ms = null; byte[] result = null; ArrayList master = null; ms = new MemoryStream(); master = new ArrayList(); int f = 0; Document document = null; PdfCopy writer = null; while (f < files.Count) { PdfReader reader = new PdfReader(files[f]); reader.ConsolidateNamedDestinations(); int n = reader.NumberOfPages; if (f == 0) { document = new Document(reader.GetPageSizeWithRotation(1)); writer = new PdfCopy(document, ms); document.Open(); } 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 (document != null) { document.Close(); } result = ms.ToArray(); ms.Close(); return(result); }
public bool Merge(string targetPdf) { if (!_filenames.Any()) { throw new FileNotFoundException("No files to merge"); } var merged = true; using (var stream = new FileStream(targetPdf, FileMode.Create)) { var document = new Document(); var pdf = new PdfCopy(document, stream); PdfReader reader = null; try { document.Open(); foreach (var file in _filenames) { reader = new PdfReader(file); pdf.AddDocument(reader); reader.Close(); } if (_bookmarks.Any()) { pdf.Outlines = CreateBookmarks(); } } catch (Exception ex) { ErrorMessage = ex.Message; merged = false; if (reader != null) { reader.Close(); } } finally { if (document != null) { document.Close(); } } } return(merged); }
public static void TestCreatePDF1() { try { Document document = new Document(); FileStream objFileStream = new System.IO.FileStream("Output.pdf", System.IO.FileMode.Create); PdfWriter writer = PdfWriter.GetInstance(document, objFileStream); document.Open(); document.AddDocListener(writer); PdfReader reader = new PdfReader("Input.pdf"); Document inputDocument = null; PdfCopy pdfCopyProvider = null; inputDocument = new Document(reader.GetPageSizeWithRotation(1)); pdfCopyProvider = new PdfCopy(inputDocument, objFileStream); inputDocument.Open(); PdfImportedPage importedPage = null; importedPage = pdfCopyProvider.GetImportedPage(reader, 1); pdfCopyProvider.Add(new Chunk("Chapter 1").SetLocalDestination("1")); pdfCopyProvider.AddPage(importedPage); // Code 2 PdfContentByte cb = writer.DirectContent; PdfOutline root = cb.RootOutline; // Code 3 PdfOutline oline1 = new PdfOutline(root, PdfAction.GotoLocalPage(1, new iTextSharp.text.pdf.PdfDestination(iTextSharp.text.pdf.PdfDestination.FITH), writer), "Chapter 1"); reader.Close(); //writer.Close(); inputDocument.Close(); //objFileStream.Close(); //document.Close(); } catch (Exception ex) { } }
public void CombinePDF(string PdfFirectory, bool DeleteOriginals) { PdfReader reader = null; Document document = null; PdfCopy copy = null; string OutputFile = this.FileLocation; //Get all the PDF pdfFiles in the current directory string[] pdfFiles = Directory.GetFiles(PdfFirectory, "*.pdf", SearchOption.TopDirectoryOnly); string filename = OutputFile; document = new Document(); copy = new PdfCopy(document, new FileStream(filename, FileMode.Create)); document.Open(); for (int f = 0; f < pdfFiles.Length; f++) { if (pdfFiles.Length > 0) { if (pdfFiles[f] != filename) { reader = new PdfReader(pdfFiles[f]); for (int p = 1; p < reader.NumberOfPages + 1; p++) { copy.AddPage(copy.GetImportedPage(reader, p)); } reader.Close(); } } if (pdfFiles[f] != filename) { if (DeleteOriginals) { File.Delete(pdfFiles[f]); } } } try { document.Close(); } catch (Exception) { throw; } }
public static void importPage(PdfReader reader, int nPage) { Document sourceDocument = null; PdfCopy pdfCopyProvider = null; PdfImportedPage importedPage = null; sourceDocument = new Document(reader.GetPageSizeWithRotation(1)); pdfCopyProvider = new PdfCopy(sourceDocument, new System.IO.FileStream(@"adsdsdasdsa.pdf", System.IO.FileMode.Create)); sourceDocument.Open(); importedPage = pdfCopyProvider.GetImportedPage(reader, nPage); pdfCopyProvider.AddPage(importedPage); sourceDocument.Close(); }
// --------------------------------------------------------------------------- /** * Creates a new PDF based on the one in the reader * @param reader a reader with a PDF file */ private byte[] ManipulateWithCopy(PdfReader reader) { using (MemoryStream ms = new MemoryStream()) { int n = reader.NumberOfPages; using (Document document = new Document()) { using (PdfCopy copy = new PdfCopy(document, ms)) { document.Open(); for (int i = 0; i < n;) { copy.AddPage(copy.GetImportedPage(reader, ++i)); } } } return(ms.ToArray()); } }
// FUNCTIONS // private static void ExtractPages(string sourcePDFpath, string outputPDFpath, int startpage, int endpage) { PdfReader reader = new PdfReader(sourcePDFpath); Document sourceDocument = new Document(reader.GetPageSizeWithRotation(startpage)); PdfCopy pdfCopyProvider = new PdfCopy(sourceDocument, new System.IO.FileStream(outputPDFpath, System.IO.FileMode.Create)); sourceDocument.Open(); for (int i = startpage; i <= endpage; i++) { PdfImportedPage importedPage = pdfCopyProvider.GetImportedPage(reader, i); pdfCopyProvider.AddPage(importedPage); } sourceDocument.Close(); reader.Close(); }
/// <summary> /// Copy a series of pages (in order) from our file into a destination file. /// </summary> /// <param name="destFile"></param> /// <param name="pageNumbers"></param> public void CopyPages(FileInfo destFile, IEnumerable <int> pageNumbers) { using (var binaryWriter = destFile.Create()) { var doc = new iTextSharp.text.Document(); var pdfWriter = new PdfCopy(doc, binaryWriter); doc.Open(); foreach (var pNumber in pageNumbers) { var page = pdfWriter.GetImportedPage(_reader, pNumber); pdfWriter.AddPage(page); } doc.Close(); } }
private void SetPdfPathList() { PdfReader reader = new PdfReader(txtInputPdfFilePath.Text); Document document = new Document(); PdfCopy copy = null; PdfFilePathList = new List <string>(); OriginalDirectoryPath = Path.GetDirectoryName(txtInputPdfFilePath.Text); TempDirectoryPath = Path.Combine(OriginalDirectoryPath, "PDF_" + DateTime.Now.ToString("yyyyMMdd_HHmmss")); _directoryPathList.Add(TempDirectoryPath); OriginalFileNmae = Path.GetFileNameWithoutExtension(txtInputPdfFilePath.Text); Directory.CreateDirectory(TempDirectoryPath); for (int i = 1; i <= reader.NumberOfPages; i++) { PdfFilePathList.Add(Path.Combine(TempDirectoryPath, OriginalFileNmae) + "_" + i.ToString() + ".pdf"); using (var fs = new FileStream(PdfFilePathList.Last(), FileMode.Create, FileAccess.Write)) { try { document = new Document(reader.GetPageSizeWithRotation(1)); copy = new PdfCopy(document, fs); document.Open(); copy.AddPage(copy.GetImportedPage(reader, i)); } finally { document.Close(); copy.Close(); } } } reader.Close(); SetNumberOfPages(); txtPageMain.Text = "1"; DisplayPdf(); document.Dispose(); copy.Dispose(); reader.Dispose(); }
public static byte[] MergeFiles(List <byte[]> sourceFiles) { Document document = new Document(); using (MemoryStream ms = new MemoryStream()) { PdfCopy copy = new PdfCopy(document, ms); document.Open(); int documentPageCounter = 0; // Iterate through all pdf documents for (int fileCounter = 0; fileCounter < sourceFiles.Count; fileCounter++) { // Create pdf reader PdfReader reader = new PdfReader(sourceFiles[fileCounter]); int numberOfPages = reader.NumberOfPages; // Iterate through all pages for (int currentPageIndex = 1; currentPageIndex <= numberOfPages; currentPageIndex++) { documentPageCounter++; PdfImportedPage importedPage = copy.GetImportedPage(reader, currentPageIndex); PdfCopy.PageStamp pageStamp = copy.CreatePageStamp(importedPage); // Write header ColumnText.ShowTextAligned(pageStamp.GetOverContent(), Element.ALIGN_CENTER, new Phrase("PDF Merger by Helvetic Solutions"), importedPage.Width / 2, importedPage.Height - 30, importedPage.Width < importedPage.Height ? 0 : 1); // Write footer ColumnText.ShowTextAligned(pageStamp.GetOverContent(), Element.ALIGN_CENTER, new Phrase(String.Format("Page {0}", documentPageCounter)), importedPage.Width / 2, 30, importedPage.Width < importedPage.Height ? 0 : 1); pageStamp.AlterContents(); copy.AddPage(importedPage); } copy.FreeReader(reader); reader.Close(); } document.Close(); return(ms.GetBuffer()); } }
public static void CompinePDFFiles(bool ImagePDFDocumentCreated, string FullPath, string FullPath_ImagePDF, HttpPostedFileBase[] Images, Random Rnd_FileNames, string Dirpath, List <string> AllCurrentFiles) { using (FileStream stream_FinalFile = new FileStream(FullPath, FileMode.OpenOrCreate)) { Document pdfDoc = new Document(); PdfCopy pdf = new PdfCopy(pdfDoc, stream_FinalFile); pdfDoc.Open(); if (ImagePDFDocumentCreated) { pdf.AddDocument(new PdfReader(FullPath_ImagePDF)); } foreach (var im in Images) { Constants.Enumerations.UploadFileTypesEnum FileType = GetFileType(im); switch (FileType) { case Constants.Enumerations.UploadFileTypesEnum.Pdf: pdf.AddDocument(new PdfReader(im.InputStream)); break; //case Constants.Enumerations.UploadFileTypesEnum.Word: // string RandomFName = GetRandomFileName(Rnd_FileNames); // string CurrentWordRandomFileName = RandomFName + Path.GetExtension(im.FileName); // string NewPdfRandomFileName = RandomFName + ".pdf"; // string CurrentWordFullPath = Dirpath + @"\" + CurrentWordRandomFileName; // string NewPdfFullPath = Dirpath + @"\" + NewPdfRandomFileName; // CovertWordToPDF(im, CurrentWordFullPath, NewPdfFullPath); // AllCurrentFiles.Add(CurrentWordRandomFileName); // AllCurrentFiles.Add(NewPdfRandomFileName); // pdf.AddDocument(new PdfReader(NewPdfFullPath)); // break; default: break; } } pdfDoc.Close(); } }
protected string extraerPaginas(string archivoMuestra, string outputPdfPath) { PdfReader reader = null; Document sourceDocument = null; PdfCopy pdfCopyProvider = null; PdfImportedPage importedPage = null; int rangoPaginas = 5; try { //Inicializa un lector de PDF en la ruta del archivo desencriptado reader = new PdfReader(archivoMuestra); if (reader.NumberOfPages > rangoPaginas) //Si tiene más de un rango de páginas predeterminado se puede descargar una muestra. { //Por simplicidad, se asume que todas las páginas del PDF comparten el mismo tamaño de página //y la misma rotación que la primera página. sourceDocument = new Document(); // Inicializa una instancia de PdfCopy con la fuente y la salida del archivo PDF pdfCopyProvider = new PdfCopy(sourceDocument, new System.IO.FileStream(outputPdfPath, System.IO.FileMode.Create)); sourceDocument.Open(); //Recorre el rango de páginas especificadas y las copia a un nuevo archivo PDF: for (int i = 1; i <= rangoPaginas; i++) { importedPage = pdfCopyProvider.GetImportedPage(reader, i); pdfCopyProvider.AddPage(importedPage); } //Cerrando streams abiertos sourceDocument.Close(); reader.Close(); return(archivoMuestra); } //De lo contrario, no es posible generar una muestra, aparece el siguiente mensaje. else { // lblMuestraNo.Text = return("El libro no tiene suficientes páginas para generar una muestra");; } } catch (Exception ex) { //lblMuestraNo.Text = "No es posible descargar una muestra de este libro"; } return(archivoMuestra); }
public List <PayStub> GenerateIndividualStubs(string filename) { List <PayStub> stubs = new List <PayStub>(); using (var reader = new PdfReader(filename)) { for (var page = 1; page <= reader.NumberOfPages; page++) { //extract page text var strategy = new iTextSharp.text.pdf.parser.SimpleTextExtractionStrategy(); var currentText = iTextSharp.text.pdf.parser.PdfTextExtractor.GetTextFromPage(reader, page, strategy); var paystub = FindPayStubMatch(currentText); if (paystub == null) { continue; } //write this individual page into a temp file var outFileName = System.IO.Path.GetTempPath() + Guid.NewGuid() + ".pdf"; var pdfDoc = new Document(reader.GetPageSizeWithRotation(page)); var stream = new MemoryStream(); var pdf = new PdfCopy(pdfDoc, stream); pdf.CloseStream = false; pdfDoc.Open(); pdf.AddPage(pdf.GetImportedPage(reader, page)); pdf.Close(); pdfDoc.Close(); stream.Position = 0; var stamper = new PdfStamper(new PdfReader(stream), new FileStream(outFileName, FileMode.Create)); if ((paystub.Password + "").Length > 0) { stamper.SetEncryption(Encoding.ASCII.GetBytes(paystub.Password), Encoding.ASCII.GetBytes(paystub.Password), PdfWriter.ALLOW_PRINTING, PdfWriter.ENCRYPTION_AES_128 | PdfWriter.DO_NOT_ENCRYPT_METADATA); } stamper.Close(); stream.Close(); paystub.Filename = outFileName; stubs.Add(paystub); } } return(stubs); }
public void MergeFiles() { if (FileList == null || FileList.Count == 0) { MessageBox.Show("No PDF files found on folder."); } else { OutputFileName = System.IO.Path.Combine(Path, $"{OutputFileName}.pdf"); Document document = new Document(); using (FileStream newFileStream = new FileStream(OutputFileName, FileMode.Create)) { PdfCopy writer = new PdfCopy(document, newFileStream); if (writer == null) { return; } document.Open(); foreach (var file in FileList) { PdfReader reader = new PdfReader(file.FullPath); 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.CopyAcroForm(reader); } reader.Close(); } writer.Close(); document.Close(); } } }
/// <summary> /// Merge the PDF Files to one single file /// </summary> /// <param name="destinationFile">Destination File</param> /// <param name="sourceFiles">Files need to Merge</param> public static void MergeFiles(string outputPdfPath, string[] lstFiles, System.Web.UI.Page pg) { PdfReader reader = null; Document sourceDocument = null; PdfCopy pdfCopyProvider = null; PdfImportedPage importedPage; sourceDocument = new Document(); pdfCopyProvider = new PdfCopy(sourceDocument, new System.IO.FileStream(outputPdfPath, System.IO.FileMode.Create)); sourceDocument.Open(); try { for (int f = 0; f < lstFiles.Length; f++) { reader = new PdfReader(lstFiles[f]); int pages = reader.NumberOfPages; //Add pages of current file for (int i = 1; i <= pages; i++) { try { importedPage = pdfCopyProvider.GetImportedPage(reader, i); pdfCopyProvider.AddPage(importedPage); } catch { } } reader.Close(); } sourceDocument.Close(); } catch (Exception ex) { //throw ex; pg.ClientScript.RegisterStartupScript(pg.GetType(), "alert", "<script>alert('Close open PDF or Try Again Later !!!');</script>"); return; } }
public static bool CreateMergedPDF() { string filePath = @"c:\tempMerge\"; string fileName = "mergePDF.pdf"; string fileCombo = filePath + fileName; if (!File.Exists(filePath)) { //This path is a file System.IO.Directory.CreateDirectory(filePath); } string sourceDir = HttpContext.Current.Server.MapPath("~/App_Data/singlePDFs"); try { using (FileStream stream = new FileStream(fileCombo, FileMode.Create)) { Document pdfDoc = new Document(PageSize.LETTER); PdfCopy pdf = new PdfCopy(pdfDoc, stream); pdfDoc.Open(); var files = Directory.GetFiles(sourceDir); int i = 1; foreach (string file in files) { pdf.AddDocument(new PdfReader(file)); i++; } if (pdfDoc != null) { pdfDoc.Close(); } return(true); } } catch (Exception e) { if (e.Message == @"The process cannot access the file 'c:\tempMerge\mergePDF.pdf' because it is being used by another process") { return(false); } } return(false); }
static void Main(string[] args) { PdfReader reader = new PdfReader(args[1]); Document document = new Document(reader.GetPageSizeWithRotation(1)); PdfCopy copy = new PdfCopy(document, new FileStream(args[0], FileMode.Create)); document.Open(); copy.AddPage(copy.GetImportedPage(reader, 1)); for (int i = 2; i < args.Length; i++) { reader = new PdfReader(args[i]); copy.AddPage(copy.GetImportedPage(reader, 1)); } document.Close(); }
private void CombineMultiplePDFs() { // 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(destinationFile, FileMode.Create)); if (writer == null) { return; } // step 3: we open the document document.Open(); foreach (string fileName in FilesName) { // 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(); // Eliminar PDFs temp //foreach (string filePath in FilesName) // File.Delete(filePath); }
private void StartButton_Click(object sender, EventArgs e) { if (splitIntoBox.Value != 0) { FileInfo file = new FileInfo(InputBox.Text); string name = file.Name.Substring(0, file.Name.LastIndexOf(".")); using (PdfReader pdfReader = new PdfReader(InputBox.Text)) { int fileNum = 1; for (int pageNumber = 1; pageNumber <= pdfReader.NumberOfPages; pageNumber++, fileNum++) { ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy(); string currentText = PdfTextExtractor.GetTextFromPage(pdfReader, pageNumber, strategy); string filename = name + "-" + fileNum + ".pdf"; Document document = new Document(); PdfCopy pdfCopy = new PdfCopy(document, new FileStream(OutputBox.Text + "\\" + filename, FileMode.Create)); document.Open(); pdfCopy.AddPage(pdfCopy.GetImportedPage(pdfReader, pageNumber)); if (splitIntoBox.Value != 1) { for (int i = 2; i <= splitIntoBox.Value && pageNumber <= pdfReader.NumberOfPages; i++) { pageNumber++; if (pageNumber > pdfReader.NumberOfPages) { MessageBox.Show($"Total amount of pages is not able to be split into {splitIntoBox.Value}s. Exit application, delete the files created, and try again.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } pdfCopy.AddPage(pdfCopy.GetImportedPage(pdfReader, pageNumber)); } } document.Close(); } MessageBox.Show("Document Processed."); Process.Start(OutputBox.Text); InputBox.Clear(); OutputBox.Clear(); } } else if (splitIntoBox.Value <= 0) { MessageBox.Show("Page Split number is not valid", "Not Valid", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void CopyBookmarks(PdfReader reader, PdfCopy writer, Dictionary <int, int> sortKeys) { var outlines = SimpleBookmark.GetBookmark(reader); var reverseSortKeys = new Dictionary <int, int>(); foreach (var newPageNumber in sortKeys.Keys) { var oldPageNumber = sortKeys[newPageNumber]; reverseSortKeys.Add(oldPageNumber, newPageNumber); } UpdateTargetPages(outlines, reverseSortKeys); SortBookmarks(outlines); writer.Outlines = outlines; }
public static byte[] GetMergePdf(List <byte[]> pdfData) { var document = new Document(); byte[] pdfBytes; using (var memoryStream = new MemoryStream()) { var writer = new PdfCopy(document, memoryStream); if (writer == null) { return(null); } document.Open(); foreach (var file in pdfData) { var reader = new PdfReader(file); reader.ConsolidateNamedDestinations(); for (int i = 1; i <= reader.NumberOfPages; i++) { var page = writer.GetImportedPage(reader, i); writer.AddPage(page); } var form = reader.AcroForm; if (form != null) { writer.AddDocument(reader); } reader.Close(); } writer.Close(); document.Close(); pdfBytes = memoryStream.ToArray(); } return(pdfBytes); }
public void ResizeForm(string sourcefile, string outFile) { var document = new Document(); var writer = new PdfCopy(document, new FileStream(outFile, FileMode.Create)); document.Open(); var reader = new PdfReader(Path.Combine(sourcefile)); for (var i = 1; i <= reader.NumberOfPages; i++) { var page = writer.GetImportedPage(reader, i); writer.AddPage(page); } reader.Close(); writer.Close(); document.Close(); }
private static Dictionary <string, string> GeneratePagesFromDictionary(PdfReader reader, Dictionary <int, string> pageMap, string outputDirectoryName) { Dictionary <string, string> fileMap = new Dictionary <string, string>(); foreach (int pageNumber in pageMap.Keys) { string path = outputDirectoryName + "\\" + pageMap[pageNumber] + ".pdf"; Document document = new Document(); PdfCopy copy = new PdfCopy(document, new FileStream(path, FileMode.Create)); document.Open(); copy.AddPage(copy.GetImportedPage(reader, pageNumber)); document.Close(); fileMap.Add(pageMap[pageNumber], path); } return(fileMap); }
public static void splitSpellPage(this PDF pdf, int page) { PdfReader reader = new PdfReader(pdf.File); PdfReader sreader = new PdfReader(pdf.SpellFile); Document sourceDocument = new Document(sreader.GetPageSizeWithRotation(1)); PdfCopy pdfCopyProvider = new PdfCopy(sourceDocument, new System.IO.FileStream("Alternate-Sheet.pdf", System.IO.FileMode.Create)); sourceDocument.Open(); PdfImportedPage importedPage = pdfCopyProvider.GetImportedPage(sreader, 1); pdfCopyProvider.AddPage(importedPage); pdfCopyProvider.AddPage(pdfCopyProvider.GetImportedPage(reader, 2)); sourceDocument.Close(); reader.Close(); sreader.Close(); pdfCopyProvider.Close(); }
private void MergeArquivo(PdfReader reader, string pathRaiz, string pathArquivo, string cpfCnpj, int pagina) { var pathArquivoTemp = String.Format(@"{0}\{1}_TEMP{2}", pathRaiz, cpfCnpj, ".pdf"); using (var readerArquivoExistente = new PdfReader(pathArquivo)) { var document = new Document(reader.GetPageSizeWithRotation(pagina)); var provider = new PdfCopy(document, new FileStream(pathArquivoTemp, FileMode.Create)); document.Open(); var conteudoPaginas = new List <string>(); string textoPag; //Adiciona páginas do arquivo existente for (int i = 1; i <= readerArquivoExistente.NumberOfPages; i++) { textoPag = PdfTextExtractor.GetTextFromPage(readerArquivoExistente, i, new SimpleTextExtractionStrategy()); var imported = provider.GetImportedPage(readerArquivoExistente, i); if (!string.IsNullOrWhiteSpace(textoPag)) { conteudoPaginas.Add(textoPag); provider.AddPage(imported); } } textoPag = PdfTextExtractor.GetTextFromPage(reader, pagina, new SimpleTextExtractionStrategy()); if (!conteudoPaginas.Contains(textoPag)) { var importedPage = provider.GetImportedPage(reader, pagina); provider.AddPage(importedPage); } document.Close(); provider.Close(); } File.Delete(pathArquivo); File.Move(pathArquivoTemp, pathArquivo); }