public void HasCorrectLetterBoundingBoxes()
        {
            using (var document = PdfDocument.Open(GetFilename(), ParsingOptions.LenientParsingOff))
            {
                var page = document.GetPage(1);

                var comparer = new DecimalComparer(3m);

                Assert.Equal("I", page.Letters[0].Value);

                Assert.Equal(90.1m, page.Letters[0].GlyphRectangle.BottomLeft.X, comparer);
                Assert.Equal(709.2m, page.Letters[0].GlyphRectangle.BottomLeft.Y, comparer);

                Assert.Equal(94.0m, page.Letters[0].GlyphRectangle.TopRight.X, comparer);
                Assert.Equal(719.89m, page.Letters[0].GlyphRectangle.TopRight.Y, comparer);

                Assert.Equal("a", page.Letters[5].Value);

                Assert.Equal(114.5m, page.Letters[5].GlyphRectangle.BottomLeft.X, comparer);
                Assert.Equal(709.2m, page.Letters[5].GlyphRectangle.BottomLeft.Y, comparer);

                Assert.Equal(119.82m, page.Letters[5].GlyphRectangle.TopRight.X, comparer);
                Assert.Equal(714.89m, page.Letters[5].GlyphRectangle.TopRight.Y, comparer);

                Assert.Equal("f", page.Letters[16].Value);

                Assert.Equal(169.9m, page.Letters[16].GlyphRectangle.BottomLeft.X, comparer);
                Assert.Equal(709.2m, page.Letters[16].GlyphRectangle.BottomLeft.Y, comparer);

                Assert.Equal(176.89m, page.Letters[16].GlyphRectangle.TopRight.X, comparer);
                Assert.Equal(719.89m, page.Letters[16].GlyphRectangle.TopRight.Y, comparer);
            }
        }
Пример #2
0
        public void LetterPositionsAreCorrectPdfBox()
        {
            using (var document = PdfDocument.Open(GetFilename()))
            {
                var page = document.GetPage(1);

                var pdfBoxData = GetPdfBoxPositionData();

                var index = 0;
                foreach (var pageLetter in page.Letters)
                {
                    if (index >= pdfBoxData.Count)
                    {
                        break;
                    }

                    var myX    = pageLetter.CharacterRectangle.Left;
                    var theirX = pdfBoxData[index].X;

                    var myLetter    = pageLetter.Value;
                    var theirLetter = pdfBoxData[index].Text;

                    if (myLetter == " " && theirLetter != " ")
                    {
                        continue;
                    }

                    var comparer = new DecimalComparer(3m);

                    Assert.Equal(theirLetter, myLetter);

                    Assert.Equal(theirX, myX, comparer);

                    Assert.Equal(pdfBoxData[index].Width, pageLetter.CharacterRectangle.Width, comparer);

                    index++;
                }
            }
        }
        public void LetterPositionsAreCorrectXfinium()
        {
            var comparer = new DecimalComparer(1);

            using (var document = PdfDocument.Open(GetFilename()))
            {
                var page = document.GetPage(1);

                var positions = GetXfiniumPositionData();

                var index = 0;
                foreach (var pageLetter in page.Letters)
                {
                    if (index >= positions.Count)
                    {
                        break;
                    }

                    var myX    = pageLetter.Location.X;
                    var theirX = positions[index].X;

                    var myLetter    = pageLetter.Value;
                    var theirLetter = positions[index].Text;

                    if (myLetter == " " && theirLetter != " ")
                    {
                        continue;
                    }

                    Assert.Equal(theirLetter, myLetter);
                    Assert.Equal(theirX, myX, comparer);

                    Assert.Equal(positions[index].Width, pageLetter.Width, 1);

                    index++;
                }
            }
        }