コード例 #1
0
        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.");
        }
コード例 #2
0
        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));
            }
        }
コード例 #3
0
ファイル: CoursePdf.cs プロジェクト: osorensen/PurplePen
        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();
            }
        }
コード例 #4
0
        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));
            }
        }
コード例 #5
0
ファイル: CoursePdf.cs プロジェクト: osorensen/PurplePen
        // 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);
        }
コード例 #6
0
ファイル: CoursePdf.cs プロジェクト: petergolde/PurplePen
        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();
            }
        }
コード例 #7
0
        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}"));
            }
        }