Ejemplo n.º 1
0
        public static void AddShape2()
        {
            //This example is using document level builder
            PdfDocument document = new PdfDocument();

            using (PdfDocumentBuilder builder = new PdfDocumentBuilder(document))
            {
                //Add line shape
                Block lineBlock = new Block();
                lineBlock.GraphicState.StrokeColor = new RgbColor(255, 0, 0);
                lineBlock.InsertLine(new Point(10, 10), new Point(200, 20));
                builder.InsertBlock(lineBlock);

                //Add rectangle shape
                Block rectBlock = new Block();
                rectBlock.GraphicState.StrokeColor = new RgbColor(255, 0, 0);
                rectBlock.GraphicState.FillColor   = new RgbColor(0, 255, 0);
                rectBlock.GraphicState.IsFilled    = true;
                rectBlock.InsertRectangle(new Rect(0, 0, 50, 50));
                builder.InsertBlock(rectBlock);
            }

            using (FileStream fs = File.Create("AddShape2.pdf"))
            {
                PdfFile pdfFile = new PdfFile();
                pdfFile.Export(document, fs);
            }
        }
Ejemplo n.º 2
0
        public void CanFastAddPageAndStripLinkAnnots()
        {
            var first    = IntegrationHelpers.GetDocumentPath("outline.pdf");
            var contents = File.ReadAllBytes(first);

            var annotCount = 0;

            byte[] results = null;
            using (var existing = PdfDocument.Open(contents, ParsingOptions.LenientParsingOff))
                using (var output = new PdfDocumentBuilder())
                {
                    output.AddPage(existing, 1);
                    results = output.Build();
                    var pg     = existing.GetPage(1);
                    var annots = pg.ExperimentalAccess.GetAnnotations().ToList();
                    annotCount = annots.Count;
                    Assert.Contains(annots, x => x.Type == Annotations.AnnotationType.Link);
                }

            using (var rewritten = PdfDocument.Open(results, ParsingOptions.LenientParsingOff))
            {
                var pg     = rewritten.GetPage(1);
                var annots = pg.ExperimentalAccess.GetAnnotations().ToList();
                Assert.Equal(annotCount - 1, annots.Count);
                Assert.DoesNotContain(annots, x => x.Type == Annotations.AnnotationType.Link);
            }
        }
Ejemplo n.º 3
0
        public void CanGeneratePdfAFile(PdfAStandard standard)
        {
            var builder = new PdfDocumentBuilder
            {
                ArchiveStandard = standard
            };

            var page = builder.AddPage(PageSize.A4);

            var imgBytes = File.ReadAllBytes(IntegrationHelpers.GetDocumentPath("smile-250-by-160.jpg", false));

            page.AddJpeg(imgBytes, new PdfRectangle(50, 70, 150, 130));

            var font = builder.AddTrueTypeFont(TrueTypeTestHelper.GetFileBytes("Roboto-Regular.ttf"));

            page.AddText($"Howdy PDF/{standard}!", 10, new PdfPoint(25, 700), font);

            var bytes = builder.Build();

            WriteFile(nameof(CanGeneratePdfAFile) + standard, bytes);

            using (var pdf = PdfDocument.Open(bytes, ParsingOptions.LenientParsingOff))
            {
                Assert.Equal(1, pdf.NumberOfPages);

                Assert.True(pdf.TryGetXmpMetadata(out var xmp));

                Assert.NotNull(xmp.GetXDocument());
            }
        }
Ejemplo n.º 4
0
        public void CanWriteRobotoAccentedCharacters()
        {
            var builder = new PdfDocumentBuilder();

            builder.DocumentInformation.Title = "Hello Roboto!";

            var page = builder.AddPage(PageSize.A4);

            var font = builder.AddTrueTypeFont(TrueTypeTestHelper.GetFileBytes("Roboto-Regular.ttf"));

            page.AddText("eé", 12, new PdfPoint(30, 520), font);

            Assert.NotEmpty(page.Operations);

            var b = builder.Build();

            WriteFile(nameof(CanWriteRobotoAccentedCharacters), b);

            Assert.NotEmpty(b);

            using (var document = PdfDocument.Open(b))
            {
                var page1 = document.GetPage(1);

                Assert.Equal("eé", page1.Text);
            }
        }
Ejemplo n.º 5
0
        public void CanCreateSingleCustomPageSize()
        {
            var builder = new PdfDocumentBuilder();

            var page = builder.AddPage(120, 250);

            var font = builder.AddStandard14Font(Standard14Font.Helvetica);

            page.AddText("Small page.", 12, new PdfPoint(25, 200), font);

            var bytes = builder.Build();

            WriteFile(nameof(CanCreateSingleCustomPageSize), bytes);

            using (var document = PdfDocument.Open(bytes, ParsingOptions.LenientParsingOff))
            {
                Assert.Equal(1, document.NumberOfPages);

                var page1 = document.GetPage(1);

                Assert.Equal(120, page1.Width);
                Assert.Equal(250, page1.Height);

                Assert.Equal("Small page.", page1.Text);
            }
        }
Ejemplo n.º 6
0
        public static void AddImageInLine()
        {
            PdfDocument document = new PdfDocument();

            //Create document level builder
            using (PdfDocumentBuilder builder = new PdfDocumentBuilder(document))
            {
                builder.InsertParagraph();
                //You can insert same image to different position in page, or insert different images to respective position
                using (Stream sampleImage = File.OpenRead("sample.jpg"))
                {
                    builder.InsertImageInline(sampleImage, new Size(40, 40));
                    builder.InsertText(", second one:");
                    builder.InsertImageInline(sampleImage, new Size(100, 100));
                    builder.InsertText(" and third one:");
                    builder.InsertImageInline(sampleImage, new Size(100, 60));
                    builder.InsertText(" the end.");
                }
            }

            using (FileStream fs = File.OpenWrite("InsertImageInLine.pdf"))
            {
                PdfFile pdfFile = new PdfFile();
                pdfFile.Export(document, fs);
            }
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Паттерн "Шаблонный метод" задает "скелет" алгоритма в методе, оставляя определение реализации некоторых
        /// шагов субклассам. Субклассы могут переопределять некоторые части алгоритма без изменения его структуры.
        /// Таким образом гарантируется неизменность структуры алгоритма при том, что часть реализации предоставляется субклассами.
        /// </summary>
        public void DemoTemplateMethod()
        {
            // Данный паттерн позволяет классам, реализующим алгоритм, передать выполнение некоторых шагов в субклассы
            var documentBuilder = new PdfDocumentBuilder();

            documentBuilder.Build();
        }
Ejemplo n.º 8
0
        public void CanGeneratePdfA2BFile()
        {
            var builder = new PdfDocumentBuilder
            {
                ArchiveStandard = PdfAStandard.A2B
            };

            var page = builder.AddPage(PageSize.A4);

            var font = builder.AddTrueTypeFont(TrueTypeTestHelper.GetFileBytes("Roboto-Regular.ttf"));

            page.AddText("Howdy PDF/A-2B and welcome!", 10, new PdfPoint(25, 700), font);

            var bytes = builder.Build();

            WriteFile(nameof(CanGeneratePdfA2BFile), bytes);

            using (var pdf = PdfDocument.Open(bytes, ParsingOptions.LenientParsingOff))
            {
                Assert.Equal(1, pdf.NumberOfPages);

                Assert.True(pdf.TryGetXmpMetadata(out var xmp));

                Assert.NotNull(xmp.GetXDocument());
            }
        }
Ejemplo n.º 9
0
        public void CanWriteSinglePageMixedRenderingMode()
        {
            var builder = new PdfDocumentBuilder();

            PdfPageBuilder page = builder.AddPage(PageSize.A4);

            PdfDocumentBuilder.AddedFont font = builder.AddStandard14Font(Standard14Font.Helvetica);

            page.AddText("Hello World!", 12, new PdfPoint(25, 520), font);

            page.SetTextRenderingMode(TextRenderingMode.Neither);

            page.AddText("Invisible!", 12, new PdfPoint(25, 500), font);

            page.SetTextRenderingMode(TextRenderingMode.Fill);

            page.AddText("Filled again!", 12, new PdfPoint(25, 480), font);

            var b = builder.Build();

            WriteFile(nameof(CanWriteSinglePageMixedRenderingMode), b);

            using (var document = PdfDocument.Open(b))
            {
                var page1 = document.GetPage(1);

                Assert.Equal(new[] { "Hello", "World!", "Invisible!", "Filled", "again!" }, page1.GetWords().Select(x => x.Text));
            }
        }
Ejemplo n.º 10
0
        public void CanWrite2PagesSharingJpeg()
        {
            var builder = new PdfDocumentBuilder();
            var page    = builder.AddPage(PageSize.A4);

            var font = builder.AddStandard14Font(Standard14Font.Helvetica);

            page.AddText("Smile", 12, new PdfPoint(25, page.PageSize.Height - 52), font);

            var img = IntegrationHelpers.GetDocumentPath("smile-250-by-160.jpg", false);

            var expectedBounds1 = new PdfRectangle(25, page.PageSize.Height - 300, 200, page.PageSize.Height - 200);

            var imageBytes = File.ReadAllBytes(img);

            var expectedBounds2 = new PdfRectangle(25, 600, 75, 650);

            var jpeg = page.AddJpeg(imageBytes, expectedBounds1);

            page.AddJpeg(jpeg, expectedBounds2);

            var expectedBounds3 = new PdfRectangle(30, 500, 130, 550);

            var page2 = builder.AddPage(PageSize.A4);

            page2.AddJpeg(jpeg, expectedBounds3);

            var bytes = builder.Build();

            WriteFile(nameof(CanWrite2PagesSharingJpeg), bytes);

            using (var document = PdfDocument.Open(bytes))
            {
                var page1 = document.GetPage(1);

                Assert.Equal("Smile", page1.Text);

                var page1Images = page1.GetImages().ToList();
                Assert.Equal(2, page1Images.Count);

                var image1 = page1Images[0];
                Assert.Equal(expectedBounds1, image1.Bounds);

                var image2 = page1Images[1];
                Assert.Equal(expectedBounds2, image2.Bounds);

                var page2Doc = document.GetPage(2);

                var image3 = Assert.Single(page2Doc.GetImages());

                Assert.NotNull(image3);

                Assert.Equal(expectedBounds3, image3.Bounds);

                Assert.Equal(imageBytes, image1.RawBytes);
                Assert.Equal(imageBytes, image2.RawBytes);
                Assert.Equal(imageBytes, image3.RawBytes);
            }
        }
Ejemplo n.º 11
0
        public void CanAddHelloWorldToSimplePage()
        {
            var path    = IntegrationHelpers.GetDocumentPath("Single Page Simple - from open office.pdf");
            var doc     = PdfDocument.Open(path);
            var builder = new PdfDocumentBuilder();

            var page = builder.AddPage(doc, 1);

            page.DrawLine(new PdfPoint(30, 520), new PdfPoint(360, 520));
            page.DrawLine(new PdfPoint(360, 520), new PdfPoint(360, 250));

            page.SetStrokeColor(250, 132, 131);
            page.DrawLine(new PdfPoint(25, 70), new PdfPoint(100, 70), 3);
            page.ResetColor();
            page.DrawRectangle(new PdfPoint(30, 200), 250, 100, 0.5m);
            page.DrawRectangle(new PdfPoint(30, 100), 250, 100, 0.5m);

            var file = TrueTypeTestHelper.GetFileBytes("Andada-Regular.ttf");

            var font = builder.AddTrueTypeFont(file);

            var letters = page.AddText("Hello World!", 12, new PdfPoint(30, 50), font);

            Assert.NotEmpty(page.CurrentStream.Operations);

            var b = builder.Build();

            WriteFile(nameof(CanAddHelloWorldToSimplePage), b);

            Assert.NotEmpty(b);

            using (var document = PdfDocument.Open(b))
            {
                var page1 = document.GetPage(1);

                Assert.Equal("I am a simple pdf.Hello World!", page1.Text);

                var h = page1.Letters[18];

                Assert.Equal("H", h.Value);
                Assert.Equal("Andada-Regular", h.FontName);

                var comparer      = new DoubleComparer(0.01);
                var pointComparer = new PointComparer(comparer);

                for (int i = 0; i < letters.Count; i++)
                {
                    var readerLetter = page1.Letters[i + 18];
                    var writerLetter = letters[i];

                    Assert.Equal(readerLetter.Value, writerLetter.Value);
                    Assert.Equal(readerLetter.Location, writerLetter.Location, pointComparer);
                    Assert.Equal(readerLetter.FontSize, writerLetter.FontSize, comparer);
                    Assert.Equal(readerLetter.GlyphRectangle.Width, writerLetter.GlyphRectangle.Width, comparer);
                    Assert.Equal(readerLetter.GlyphRectangle.Height, writerLetter.GlyphRectangle.Height, comparer);
                    Assert.Equal(readerLetter.GlyphRectangle.BottomLeft, writerLetter.GlyphRectangle.BottomLeft, pointComparer);
                }
            }
        }
Ejemplo n.º 12
0
        private static byte[] CreateSingleBlankPage()
        {
            var builder = new PdfDocumentBuilder();

            builder.AddPage(PageSize.A4);

            var result = builder.Build();

            return(result);
        }
Ejemplo n.º 13
0
        public void CanWriteSinglePageHelloWorld()
        {
            var builder = new PdfDocumentBuilder();

            var page = builder.AddPage(PageSize.A4);

            page.DrawLine(new PdfPoint(30, 520), new PdfPoint(360, 520));
            page.DrawLine(new PdfPoint(360, 520), new PdfPoint(360, 250));

            page.SetStrokeColor(250, 132, 131);
            page.DrawLine(new PdfPoint(25, 70), new PdfPoint(100, 70), 3);
            page.ResetColor();
            page.DrawRectangle(new PdfPoint(30, 200), 250, 100, 0.5m);
            page.DrawRectangle(new PdfPoint(30, 100), 250, 100, 0.5m);

            var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Fonts", "TrueType");
            var file = Path.Combine(path, "Andada-Regular.ttf");

            var font = builder.AddTrueTypeFont(File.ReadAllBytes(file));

            var letters = page.AddText("Hello World!", 12, new PdfPoint(30, 50), font);

            Assert.NotEmpty(page.Operations);

            var b = builder.Build();

            WriteFile(nameof(CanWriteSinglePageHelloWorld), b);

            Assert.NotEmpty(b);

            using (var document = PdfDocument.Open(b))
            {
                var page1 = document.GetPage(1);

                Assert.Equal("Hello World!", page1.Text);

                var h = page1.Letters[0];

                Assert.Equal("H", h.Value);
                Assert.Equal("Andada-Regular", h.FontName);

                for (int i = 0; i < page1.Letters.Count; i++)
                {
                    var readerLetter = page1.Letters[i];
                    var writerLetter = letters[i];

                    Assert.Equal(readerLetter.Value, writerLetter.Value);
                    Assert.Equal(readerLetter.Location, writerLetter.Location);
                    Assert.Equal(readerLetter.FontSize, writerLetter.FontSize);
                    Assert.Equal(readerLetter.GlyphRectangle.Width, writerLetter.GlyphRectangle.Width);
                    Assert.Equal(readerLetter.GlyphRectangle.Height, writerLetter.GlyphRectangle.Height);
                    Assert.Equal(readerLetter.GlyphRectangle.BottomLeft, writerLetter.GlyphRectangle.BottomLeft);
                }
            }
        }
Ejemplo n.º 14
0
        public void CanCreateDocumentWithFilledRectangle()
        {
            var builder = new PdfDocumentBuilder();
            var page    = builder.AddPage(PageSize.A4);

            page.SetTextAndFillColor(255, 0, 0);
            page.SetStrokeColor(0, 0, 255);

            page.DrawRectangle(new PdfPoint(20, 100), 200, 100, 1.5m, true);

            var file = builder.Build();

            WriteFile(nameof(CanCreateDocumentWithFilledRectangle), file);
        }
Ejemplo n.º 15
0
 public void CanWriteEmptyContentStream()
 {
     using (var builder = new PdfDocumentBuilder())
     {
         builder.AddPage(PageSize.A4);
         var result = builder.Build();
         using (var document = PdfDocument.Open(result, ParsingOptions.LenientParsingOff))
         {
             Assert.Equal(1, document.NumberOfPages);
             var pg = document.GetPage(1);
             // single empty page should result in single content stream
             Assert.NotNull(pg.Dictionary.Data[NameToken.Contents] as IndirectReferenceToken);
         }
     }
 }
Ejemplo n.º 16
0
        public void CanMerge2SimpleDocuments_Builder()
        {
            var one = IntegrationHelpers.GetDocumentPath("Single Page Simple - from inkscape.pdf");
            var two = IntegrationHelpers.GetDocumentPath("Single Page Simple - from open office.pdf");

            using (var docOne = PdfDocument.Open(one))
                using (var docTwo = PdfDocument.Open(two))
                    using (var builder = new PdfDocumentBuilder())
                    {
                        builder.AddPage(docOne, 1);
                        builder.AddPage(docTwo, 1);
                        var result = builder.Build();
                        PdfMergerTests.CanMerge2SimpleDocumentsAssertions(new MemoryStream(result), "Write something inInkscape", "I am a simple pdf.", false);
                    }
        }
Ejemplo n.º 17
0
        private static ReadOnlySpan <byte> CreatePdfWithMetadata()
        {
            var builder = new PdfDocumentBuilder();
            var page    = builder.AddPage(PageSize.A4);
            var font    = builder.AddStandard14Font(Standard14Font.Helvetica);

            builder.DocumentInformation.Title    = "Sample title";
            builder.DocumentInformation.Author   = "John Doe";
            builder.DocumentInformation.Subject  = "Philosophy";
            builder.DocumentInformation.Keywords = "Philosophy; Eastern;";
            builder.IncludeDocumentInformation   = true;

            page.AddText(SampleText, 12, new PdfPoint(25, 700), font);

            return(builder.Build());
        }
Ejemplo n.º 18
0
        public void CopiedPagesResultInSameData(string name)
        {
            var docPath = IntegrationHelpers.GetDocumentPath(name);

            using (var doc = PdfDocument.Open(docPath, ParsingOptions.LenientParsingOff))
                using (var builder = new PdfDocumentBuilder())
                {
                    var count1 = GetCounts(doc);

                    for (var i = 1; i <= doc.NumberOfPages; i++)
                    {
                        builder.AddPage(doc, i);
                    }
                    var result = builder.Build();
                    WriteFile(nameof(CopiedPagesResultInSameData) + "_" + name, result);

                    using (var doc2 = PdfDocument.Open(result, ParsingOptions.LenientParsingOff))
                    {
                        var count2 = GetCounts(doc2);
                        Assert.Equal(count1.Item1, count2.Item1);
                        Assert.Equal(count1.Item2, count2.Item2);
                    }
                }


            (int, double) GetCounts(PdfDocument toCount)
            {
                int    letters  = 0;
                double location = 0;

                foreach (var page in toCount.GetPages())
                {
                    foreach (var letter in page.Letters)
                    {
                        unchecked { letters += 1; }
                        unchecked
                        {
                            location += letter.Location.X;
                            location += letter.Location.Y;
                            location += letter.Font.Name.Length;
                        }
                    }
                }

                return(letters, location);
            }
        }
Ejemplo n.º 19
0
 public void CanWriteAndIgnoreEmptyContentStream()
 {
     using (var builder = new PdfDocumentBuilder())
     {
         var pb = builder.AddPage(PageSize.A4);
         pb.DrawLine(new PdfPoint(1, 1), new PdfPoint(2, 2));
         pb.NewContentStreamAfter();
         var result = builder.Build();
         using (var document = PdfDocument.Open(result, ParsingOptions.LenientParsingOff))
         {
             Assert.Equal(1, document.NumberOfPages);
             var pg = document.GetPage(1);
             // empty stream should be ignored and resulting single stream should be written
             Assert.NotNull(pg.Dictionary.Data[NameToken.Contents] as IndirectReferenceToken);
         }
     }
 }
Ejemplo n.º 20
0
        public static void AddText2()
        {
            //This example is using document level builder(flow-like), if the text inserted is out of one page,
            //the builder will insert the left text on a second page automatically
            PdfDocument document = new PdfDocument();

            //Create document level builder
            using (PdfDocumentBuilder builder = new PdfDocumentBuilder(document))
            {
                //Set page size and margins
                builder.SectionState.PageSize    = PaperTypeConverter.ToSize(PaperTypes.A4);
                builder.SectionState.PageMargins = new Padding(20);

                //Set text alignment
                builder.ParagraphState.HorizontalAlignment = Editing.Flow.HorizontalAlignment.Center;
                //Set font style
                builder.CharacterState.SetFont(new FontFamily("LegacySansEFOP-Book"));
                builder.CharacterState.FontSize = 40;
                builder.InsertParagraph();
                builder.InsertText("Document Title");
                builder.InsertLineBreak();

                //Add several paragraphs to page
                builder.ParagraphState.HorizontalAlignment = Editing.Flow.HorizontalAlignment.Left;
                builder.CharacterState.FontSize            = 20;
                for (int i = 0; i < 20; i++)
                {
                    builder.InsertParagraph();
                    string text = "";
                    for (int j = 1; j < 11; j++)
                    {
                        text += "This is sentence " + j.ToString() + ". ";
                    }
                    builder.InsertText(text);
                    builder.InsertLineBreak();
                }
            }

            using (FileStream fs = File.Create("InsertText2.pdf"))
            {
                PdfFile pdfFile = new PdfFile();
                pdfFile.Export(document, fs);
            }
        }
Ejemplo n.º 21
0
        public void WindowsOnlyCanWriteSinglePageAccentedCharactersSystemFont()
        {
            var builder = new PdfDocumentBuilder();

            builder.DocumentInformation.Title = "Hello Windows!";

            var page = builder.AddPage(PageSize.A4);

            var file = @"C:\Windows\Fonts\Calibri.ttf";

            if (!File.Exists(file))
            {
                return;
            }

            byte[] bytes;
            try
            {
                bytes = File.ReadAllBytes(file);
            }
            catch
            {
                return;
            }

            var font = builder.AddTrueTypeFont(bytes);

            page.AddText("eé", 12, new PdfPoint(30, 520), font);

            Assert.NotEmpty(page.Operations);

            var b = builder.Build();

            WriteFile(nameof(WindowsOnlyCanWriteSinglePageAccentedCharactersSystemFont), b);

            Assert.NotEmpty(b);

            using (var document = PdfDocument.Open(b))
            {
                var page1 = document.GetPage(1);

                Assert.Equal("eé", page1.Text);
            }
        }
Ejemplo n.º 22
0
        public void CanCopyPage()
        {
            byte[] b;
            {
                var builder = new PdfDocumentBuilder();

                var page1 = builder.AddPage(PageSize.A4);

                var file = TrueTypeTestHelper.GetFileBytes("Andada-Regular.ttf");

                var font = builder.AddTrueTypeFont(file);

                page1.AddText("Hello", 12, new PdfPoint(30, 50), font);

                Assert.NotEmpty(page1.CurrentStream.Operations);


                using (var readDocument = PdfDocument.Open(IntegrationHelpers.GetDocumentPath("bold-italic.pdf")))
                {
                    var rpage = readDocument.GetPage(1);

                    var page2 = builder.AddPage(PageSize.A4);
                    page2.CopyFrom(rpage);
                }

                b = builder.Build();
                Assert.NotEmpty(b);
            }

            WriteFile(nameof(CanCopyPage), b);

            using (var document = PdfDocument.Open(b))
            {
                Assert.Equal(2, document.NumberOfPages);

                var page1 = document.GetPage(1);

                Assert.Equal("Hello", page1.Text);

                var page2 = document.GetPage(2);

                Assert.Equal("Lorem ipsum dolor sit amet, consectetur adipiscing elit. ", page2.Text);
            }
        }
Ejemplo n.º 23
0
        public static void AddTable2(DataTable dt)
        {
            PdfDocument document = new PdfDocument();

            using (PdfDocumentBuilder builder = new PdfDocumentBuilder(document))
            {
                Table table = CreateSimpleTable(dt);
                table.LayoutType = Editing.Flow.TableLayoutType.FixedWidth;
                builder.InsertTable(table);

                table            = CreateTableFrame();
                table.LayoutType = Editing.Flow.TableLayoutType.FixedWidth;
                builder.InsertTable(table);
            }

            PdfFile pdfFile = new PdfFile();

            File.WriteAllBytes("AddTable2.pdf", pdfFile.Export(document));
        }
Ejemplo n.º 24
0
        public void CanCreatePageTree()
        {
            var count = 25 * 25 * 25 + 1;

            using (var builder = new PdfDocumentBuilder())
            {
                for (var i = 0; i < count; i++)
                {
                    builder.AddPage(PageSize.A4);
                }
                var result = builder.Build();
                WriteFile(nameof(CanCreatePageTree), result);

                using (var document = PdfDocument.Open(result, ParsingOptions.LenientParsingOff))
                {
                    Assert.Equal(count, document.NumberOfPages);
                }
            }
        }
Ejemplo n.º 25
0
        public void CanWriteSinglePageHelloWorld()
        {
            var builder = new PdfDocumentBuilder();

            var page = builder.AddPage(PageSize.A4);

            var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Fonts", "TrueType");
            var file = Path.Combine(path, "Andada-Regular.ttf");

            var font = builder.AddTrueTypeFont(File.ReadAllBytes(file));

            page.AddText("Hello World!", 12, new PdfPoint(30, 50), font);

            Assert.NotEmpty(page.Operations);

            var b = builder.Build();

            Assert.NotEmpty(b);
        }
Ejemplo n.º 26
0
        public void CanCreateDocumentInformationDictionaryWithNonAsciiCharacters()
        {
            const string littlePig = "маленький поросенок";
            var          builder   = new PdfDocumentBuilder();

            builder.DocumentInformation.Title = littlePig;
            var page = builder.AddPage(PageSize.A4);
            var font = builder.AddTrueTypeFont(TrueTypeTestHelper.GetFileBytes("Roboto-Regular.ttf"));

            page.AddText(littlePig, 12, new PdfPoint(120, 600), font);

            var file = builder.Build();

            WriteFile(nameof(CanCreateDocumentInformationDictionaryWithNonAsciiCharacters), file);
            using (var document = PdfDocument.Open(file))
            {
                Assert.Equal(littlePig, document.Information.Title);
            }
        }
Ejemplo n.º 27
0
        public void CanDedupObjectsFromSameDoc_Builder()
        {
            var one = IntegrationHelpers.GetDocumentPath("Multiple Page - from Mortality Statistics.pdf");

            using (var doc = PdfDocument.Open(one))
            {
                var builder = new PdfDocumentBuilder();
                builder.AddPage(doc, 1);
                builder.AddPage(doc, 1);

                var result = builder.Build();

                using (var document = PdfDocument.Open(result, ParsingOptions.LenientParsingOff))
                {
                    Assert.Equal(2, document.NumberOfPages);
                    Assert.True(document.Structure.CrossReferenceTable.ObjectOffsets.Count <= 29,
                                "Expected object count to be lower than 30"); // 45 objects with duplicates, 29 with correct re-use
                }
            }
        }
Ejemplo n.º 28
0
 public void CanWriteMultipleContentStream()
 {
     using (var builder = new PdfDocumentBuilder())
     {
         var pb = builder.AddPage(PageSize.A4);
         pb.DrawLine(new PdfPoint(1, 1), new PdfPoint(2, 2));
         pb.NewContentStreamAfter();
         pb.DrawLine(new PdfPoint(1, 1), new PdfPoint(2, 2));
         var result = builder.Build();
         using (var document = PdfDocument.Open(result, ParsingOptions.LenientParsingOff))
         {
             Assert.Equal(1, document.NumberOfPages);
             var pg = document.GetPage(1);
             // multiple streams should be written to array
             var streams = pg.Dictionary.Data[NameToken.Contents] as ArrayToken;
             Assert.NotNull(streams);
             Assert.Equal(2, streams.Length);
         }
     }
 }
Ejemplo n.º 29
0
        public void CanWriteSinglePageStandard14FontHelloWorld()
        {
            var builder = new PdfDocumentBuilder();

            PdfPageBuilder page = builder.AddPage(PageSize.A4);

            PdfDocumentBuilder.AddedFont font = builder.AddStandard14Font(Standard14Font.Helvetica);

            page.AddText("Hello World!", 12, new PdfPoint(25, 520), font);

            var b = builder.Build();

            WriteFile(nameof(CanWriteSinglePageStandard14FontHelloWorld), b);

            using (var document = PdfDocument.Open(b))
            {
                var page1 = document.GetPage(1);

                Assert.Equal(new[] { "Hello", "World!" }, page1.GetWords().Select(x => x.Text));
            }
        }
Ejemplo n.º 30
0
        public void CanWriteSinglePageWithCzechCharacters()
        {
            var builder = new PdfDocumentBuilder();
            var page    = builder.AddPage(PageSize.A4);

            var font = builder.AddTrueTypeFont(TrueTypeTestHelper.GetFileBytes("Roboto-Regular.ttf"));

            page.AddText("Hello: řó", 9,
                         new PdfPoint(30, page.PageSize.Height - 50), font);

            var bytes = builder.Build();

            WriteFile(nameof(CanWriteSinglePageWithCzechCharacters), bytes);

            using (var document = PdfDocument.Open(bytes))
            {
                var page1 = document.GetPage(1);

                Assert.Equal("Hello: řó", page1.Text);
            }
        }