public static void ImportSetOfFiles_CustomMerge() { // ExStart:ImportSetOfFiles_CustomMerge // ExFor:PdfImporter // ExFor:PdfImporter.Import(System.String,PdfImportOptions) // ExFor:Document.Merge // ExFor:MergeOptions // ExFor:MergeOptions.ImportAsSinglePage // ExFor:MergeOptions.PageSpacing // ExSummary:Shows how to import all pages from PDF document grouping every 5 pages to a single OneNote page. string dataDir = RunExamples.GetDataDir_Import(); var d = new Document(); var mergeOptions = new MergeOptions() { ImportAsSinglePage = true, PageSpacing = 100 }; IEnumerable <Page> pages = PdfImporter.Import(Path.Combine(dataDir, "SampleGrouping.pdf")); while (pages.Any()) { d.Merge(pages.Take(5), mergeOptions); pages = pages.Skip(5); } d.Save(Path.Combine(dataDir, "sample_CustomMerge.one")); // ExEnd:ImportSetOfFiles_CustomMerge Console.WriteLine("\nThe PDF document is imported successfully."); }
public HttpResponseMessage ImportInitialData(string path) { string result = PdfImporter.ImportInitialData(path, db); if (string.IsNullOrEmpty(result)) { return(new HttpResponseMessage(HttpStatusCode.OK)); } else { return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, result)); } }
public void CreatePdfs() { List <Pair <string, IEnumerable <CourseDesignator> > > fileList = GetFilesToCreate(); // Test that we can read the page. We don't keep the page around, because there are weird // bugs that occur if we do. if (IsPdfMap) { PdfImporter pdfImporter = new PdfImporter(sourcePdfMapFileName); try { PdfPage pdfMapPage = pdfImporter.GetPage(0); } catch (Exception) { // We couldn't import the page. Fall back to normal map rendering methods. sourcePdfMapFileName = null; // IsPdfMap will now be false. } } totalPages = 0; foreach (var pair in fileList) { totalPages += LayoutPages(pair.Second).Count; } controller.ShowProgressDialog(true); try { currentPage = 0; foreach (var pair in fileList) { CreateOnePdfFile(pair.First, pair.Second); } } finally { controller.EndProgressDialog(); } }
public HttpResponseMessage Import(string path, string raceDate) { DateTime?date = null; if (!string.IsNullOrEmpty(raceDate)) { DateTime d; if (DateTime.TryParseExact(raceDate, "dd-MM-yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out d)) { date = d; } } string result = PdfImporter.ImportPdf(path, date, db); if (string.IsNullOrEmpty(result)) { return(new HttpResponseMessage(HttpStatusCode.OK)); } else { return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, result)); } }
// Create a single PDF file void CreateOnePdfFile(string fileName, IEnumerable <CourseDesignator> courseDesignators) { List <CoursePage> pages = LayoutPages(courseDesignators); PdfWriter pdfWriter = new PdfWriter(Path.GetFileNameWithoutExtension(fileName), coursePdfSettings.ColorModel == ColorModel.CMYK); foreach (CoursePage page in pages) { CoursePage pageToDraw = page; SizeF paperSize = new SizeF(pageToDraw.paperSize.Width / 100F, pageToDraw.paperSize.Height / 100F); if (pageToDraw.landscape) { paperSize = new SizeF(paperSize.Height, paperSize.Width); } if (controller.UpdateProgressDialog(string.Format(MiscText.CreatingFile, Path.GetFileName(fileName)), (double)currentPage / (double)totalPages)) { throw new Exception(MiscText.CancelledByUser); } IGraphicsTarget grTarget; PdfImporter pdfImporter = null; if (IsPdfMap) { // We need to re-obtain a PdfImporter every time, or else very strange bugs start to crop up. pdfImporter = new PdfImporter(sourcePdfMapFileName); float scaleRatio = CourseView.CreatePrintingCourseView(eventDB, page.courseDesignator).ScaleRatio; if (scaleRatio == 1.0) { // If we're doing a PDF at scale 1, we just copy the page directly. grTarget = pdfWriter.BeginCopiedPage(pdfImporter, 0); pageToDraw = PdfNonScaledPage(page.courseDesignator); } else { Matrix transform = Geometry.CreateInvertedRectangleTransform(page.printRectangle, page.mapRectangle); RectangleF printedPortionInMapCoords = Geometry.TransformRectangle(transform, new RectangleF(0, 0, paperSize.Width * 100F, paperSize.Height * 100F)); RectangleF printedPortionInInches = new RectangleF( Geometry.InchesFromMm(printedPortionInMapCoords.Left), Geometry.InchesFromMm(mapBounds.Height - printedPortionInMapCoords.Bottom), Geometry.InchesFromMm(printedPortionInMapCoords.Width), Geometry.InchesFromMm(printedPortionInMapCoords.Height)); grTarget = pdfWriter.BeginCopiedPartialPage(pdfImporter, 0, paperSize, printedPortionInInches); } // Don't draw the map normally. mapDisplay.SetMapFile(MapType.None, null); } else { grTarget = pdfWriter.BeginPage(paperSize); } DrawPage(grTarget, pageToDraw); pdfWriter.EndPage(grTarget); grTarget.Dispose(); if (pdfImporter != null) { pdfImporter.Dispose(); pdfImporter = null; } currentPage += 1; } pdfWriter.Save(fileName); }
public void CreatePdfs() { List<Pair<string, IEnumerable<CourseDesignator>>> fileList = GetFilesToCreate(); pdfImporter = null; if (IsPdfMap) { pdfImporter = new PdfImporter(sourcePdfMapFileName); try { pdfMapPage = pdfImporter.GetPage(0); } catch (Exception) { // We couldn't import the page. Fall back to normal map rendering methods. sourcePdfMapFileName = null; // IsPdfMap will now be false. } } totalPages = 0; foreach (var pair in fileList) { totalPages += LayoutPages(pair.Second).Count; } controller.ShowProgressDialog(true); try { currentPage = 0; foreach (var pair in fileList) { CreateOnePdfFile(pair.First, pair.Second); } } finally { if (pdfImporter != null) { pdfImporter.Dispose(); pdfImporter = null; } controller.EndProgressDialog(); } }
public async Task Handle(ParseFile message, CancellationToken token) { try { var blob = await blobStorage.GetFileAsync(message.BlobId, message.Bucket); string txtData = null; Dictionary <string, byte[]> images = null; //tables = null; switch (Path.GetExtension(blob.Info.FileName).ToLower()) { case ".pdf": if (((OperationType)message.ByteTypes & OperationType.Text) != 0) { txtData = PdfImporter.GetText(blob.GetContentAsStream(), blob.Info.FileName); } if (((OperationType)message.ByteTypes & OperationType.Images) != 0) { images = PdfImporter.GetImagesAsBytes(blob.GetContentAsStream(), blob.Info.FileName); } if (((OperationType)message.ByteTypes & OperationType.Tables) != 0) { //tables } break; default: await eventPublisher.Publish(new FileParseFailed(message.Id, message.CorrelationId, message.UserId, $"Cannot find file parser for {blob.Info.FileName}")); break; } string bucket = message.Bucket; if (txtData != null) { var txtFileId = Guid.NewGuid(); await blobStorage.AddFileAsync(txtFileId, $"Text from {blob.Info.FileName}.txt", new MemoryStream(Encoding.UTF8.GetBytes(txtData)), "text/plain", bucket); await eventPublisher.Publish(new TextExported(message.Id, message.CorrelationId, message.UserId, txtFileId)); } if (images != null && images.Count != 0) { var imgCount = 0; foreach (var img in images) { if (img.Value != null) { var imgId = Guid.NewGuid(); await blobStorage.AddFileAsync(imgId, $"{img.Key}", new MemoryStream(img.Value), "image/jpeg", bucket); imgCount++; await eventPublisher.Publish(new ImageExported(imgId, message.CorrelationId, message.UserId, message.BlobId, imgCount)); } } } await eventPublisher.Publish(new FileParsed(message.Id, message.CorrelationId, message.UserId, message.ByteTypes)); } catch (Exception e) { await eventPublisher.Publish(new FileParseFailed(message.Id, message.CorrelationId, message.UserId, $"Cannot parse pdf file from bucket {message.Bucket} with Id {message.BlobId}. Error: {e.Message}")); } }