From a439b432467724489fe344f27cf3f9a5f511ba12 Mon Sep 17 00:00:00 2001 From: mvantzet Date: Mon, 13 Mar 2023 18:08:20 +0100 Subject: [PATCH] Added integration test for cropped document, and a cropped+rotated document with an annotation as well. Added annotations to visual verification test (blue outlines). --- .../SPARC - v9 Architecture Manual.jpg | Bin 0 -> 52301 bytes .../Documents/cropped-and-rotated.jpg | Bin 0 -> 6455 bytes .../Documents/cropped-and-rotated.pdf | Bin 0 -> 31216 bytes .../Integration/RotationAndCroppingTests.cs | 30 ++++++++++++++++++ .../GenerateLetterBoundingBoxImages.cs | 22 ++++++++++++- 5 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 src/UglyToad.PdfPig.Tests/Integration/Documents/SPARC - v9 Architecture Manual.jpg create mode 100644 src/UglyToad.PdfPig.Tests/Integration/Documents/cropped-and-rotated.jpg create mode 100644 src/UglyToad.PdfPig.Tests/Integration/Documents/cropped-and-rotated.pdf create mode 100644 src/UglyToad.PdfPig.Tests/Integration/RotationAndCroppingTests.cs diff --git a/src/UglyToad.PdfPig.Tests/Integration/Documents/SPARC - v9 Architecture Manual.jpg b/src/UglyToad.PdfPig.Tests/Integration/Documents/SPARC - v9 Architecture Manual.jpg new file mode 100644 index 0000000000000000000000000000000000000000..59d6514efef170b7fc58f96296b87c9cbe667101 GIT binary patch literal 52301 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 literal 0 HcmV?d00001 diff --git a/src/UglyToad.PdfPig.Tests/Integration/Documents/cropped-and-rotated.jpg b/src/UglyToad.PdfPig.Tests/Integration/Documents/cropped-and-rotated.jpg new file mode 100644 index 0000000000000000000000000000000000000000..eac24874d2aad6256f0604fd6ac6f57cfe625bf8 GIT binary patch literal 6455 zcmeHLdpwls9)HF#!*Fsf;bhjOr3*r&qA9r-qNL1Oa?i49TbFSbFHTZQLb58xrO?IN zV$jW0RAd##C9Itbt1aXmtMM|I_q?M$yQj}*|2TWj`E)+#9MAjt{pNY+eV&=$_xXK) zzu)t`=nIqsRNS0god6Dp0|&4Rpj;5OD2PF5B#OOPWF7KErEParA~2?TjXc?FWRVLc^9l9KdB`XleA%E;mIawH;wxG>~* zDfB*2l?NTTJUmVf$f)A*syMU-kTKik7R-}ESZFvIysR97h?${?4PdBX=Hv00(Q=r@ z*ytqeIgnMAQ`0lwMo{+(BzVUe0sDsNza$`8iUvNlhSopz+PrrzXjfUn%gQfZuBfcKa`k3y9izUX@z(8!%`J}}KWS}y+Rf_e?dyLrFv#VNjQ%k8 z^2b-N`O`nmycNtMbMsPMIDmf#3)8=eOBKTi5!t_JSe+(rMO(8jCi&vRt%5l(Y&<`b9wuM8|$eqA&ra#eKF4vHvGoYOfSsl ziqJJaZsx6a?~3{?E_pDZC1QQ?3Zx6x*+oq_wVRRs@Z`Wz?s$B;F#&9k=d;j5HL_PjA$jsib>O%~m$i7HW6 zM?t!m&>sa|PRJ@09E;zDf**#z3815c6V?Frn^F|C-xfRtdN$+I{fv}pR`sxK1eUk=lc znItH(WPB{q1zCNqkzl|XD{*-#X^x%rPGTb}k{H|^OSnaph=R0gNjF6B6{Nrw7la?t zpyqi0)qOKNaJ*_w|6@ny;~4Rm-W(|)SVe@^t*u&q(dAlhL%( z1Yc^-O8(cPc6ObNm%JP%2qH(LlH?Q449{JwL7479GoHaji41B~GmNyUx9ZV`+{Dd3{yM_faq%8lVVG zII~bN$RUCXVRA!ITLGY$PF#2z9Wej~KxtoahNQ&%~6hNjvF%gHNdDQ~z|M z>25<$Y`fTFWwCMHDj$EVd(*JtVe5;!kyDv#&yW=p{g9O?knYN^`V9pRX&b}NQuEteZ<*wNnSEY_D=x6G#2jiBJnvOEDmL7oAE)tDgN3n;iWzIACb0cz_LMWLW(VO^`dU`vTd z!$`O|i58Cncl#8(vP@uHBJ<%Dp=}o8Y@h2g8b(2?^2@Ed&O!jS<%qCCdqdeB1>Ldb zzk#QTfP$X^F{MPQ@=jF3KvyFJCMJnZk7eStl_^a-TdM z0+FDJ?JQ`f=%6@-GTJJ^iu#L;3e5IRopJ&1)BL|0OLQvpUC2%?ge)CT868iyhWh(6 zpqU8^KiUD5xlP{-44!rYPK-7)6coe z9hvjTVh7i;sRV25UMCxyuTk)rQfu_6ed@SmJs)ajpZs2x(IrX<4<_8Co^0>dIq#=0lt9zG5UShulxsrQz^{ScnXp*L+1pSM~w8O|Xd zmyi&rpZ25&_L!}QQfDLAc3yefe2>u=dcsrRN)I<`Vlz~=<1Kqea)<0?Y;dYS7dtRF ziR*>QEa{d2euix*rl-&7-tu?G4&EpbVE5(42)5lh7B__*n$P0K^G6}L1_ht7=QmDe zKuGu@6wD=TU7WGFR*NiIjE~=y8SV*P5|iPni2=Ar{*bE`oa58&5E>FHtKw*qkhj{FdGMql5_s#<5Z#Zf6 z+~CE&c>m4tUF*I5(G}l62~U#scK+P-Rba8BlQ(#F*kerrqKpFBael!>2X75?xk!Z% zJ+xEa-xJl{zo)Mpp;WmiBrS*5&9QdW)ZV#Ezni;rDqj-6_P%Q5xo5({9ffU2Cg-8% z@mHm<*za$k$C=?%>14PpnMm8gc`h>i!!@!ZlH9-ZGp}j~a^%6FJr;9;7uvsbihC0k Mu4U8V8jcS96}%d;<^TWy literal 0 HcmV?d00001 diff --git a/src/UglyToad.PdfPig.Tests/Integration/Documents/cropped-and-rotated.pdf b/src/UglyToad.PdfPig.Tests/Integration/Documents/cropped-and-rotated.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c58b1c18cb03c5ac9290b719793cf7a5b956175d GIT binary patch literal 31216 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 hHyMFxZE)BIaL^ l.GlyphRectangle.Left).Min(); + var maxX = page.Letters.Select(l => l.GlyphRectangle.Right).Max(); + Assert.Equal(72, minX, 0); // If cropping is not applied correctly, these values will be off + Assert.Equal(540, maxX, 0); // If cropping is not applied correctly, these values will be off + // The page is cropped at + Assert.NotNull(page.Content); + } + } + } +} diff --git a/src/UglyToad.PdfPig.Tests/Integration/VisualVerification/GenerateLetterBoundingBoxImages.cs b/src/UglyToad.PdfPig.Tests/Integration/VisualVerification/GenerateLetterBoundingBoxImages.cs index bf5f1e07..f24c9385 100644 --- a/src/UglyToad.PdfPig.Tests/Integration/VisualVerification/GenerateLetterBoundingBoxImages.cs +++ b/src/UglyToad.PdfPig.Tests/Integration/VisualVerification/GenerateLetterBoundingBoxImages.cs @@ -19,7 +19,9 @@ private const string SinglePage90ClockwiseRotation = "SinglePage90ClockwiseRotation - from PdfPig"; private const string SinglePage180ClockwiseRotation = "SinglePage180ClockwiseRotation - from PdfPig"; private const string SinglePage270ClockwiseRotation = "SinglePage270ClockwiseRotation - from PdfPig"; - + private const string SPARCv9ArchitectureManual = "SPARC - v9 Architecture Manual"; + private const string CroppedAndRotatedFile = "cropped-and-rotated"; + private static string GetFilename(string name) { var documentFolder = Path.GetFullPath(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "..", "..", "..", "Integration", "Documents")); @@ -116,6 +118,18 @@ Run(SinglePage270ClockwiseRotation, 595); } + [Fact] + public void SPARCv9ArchitectureManualTest() + { + Run(SPARCv9ArchitectureManual); + } + + [Fact] + public void CroppedAndRotatedTest() + { + Run(CroppedAndRotatedFile, 205); + } + private static void Run(string file, int imageHeight = 792) { var pdfFileName = GetFilename(file); @@ -127,6 +141,7 @@ var violetPen = new Pen(Color.BlueViolet, 1); var redPen = new Pen(Color.Crimson, 1); + var bluePen = new Pen(Color.GreenYellow, 1); using (var bitmap = new Bitmap(image)) using (var graphics = Graphics.FromImage(bitmap)) @@ -141,6 +156,11 @@ DrawRectangle(letter.GlyphRectangle, graphics, violetPen, imageHeight); } + foreach (var annotation in page.ExperimentalAccess.GetAnnotations()) + { + DrawRectangle(annotation.Rectangle, graphics, bluePen, imageHeight); + } + var imageName = $"{file}.jpg"; if (!Directory.Exists("Images"))