From 98c0bace5f43305ea31fac1e7ddb9db07c3f453e Mon Sep 17 00:00:00 2001 From: Irfana Jaffer Sadhik Date: Tue, 25 Feb 2025 18:57:53 +0530 Subject: [PATCH 1/2] Task-935631-RotatedPDF sample updated --- ...nature-Fields-in-Rotated-PDF-Documents.sln | 25 +++++ .../Data/PDF.pfx | Bin 0 -> 2582 bytes .../Data/TestImage.png | Bin 0 -> 43478 bytes .../Data/TestPDF.pdf | Bin 0 -> 6113 bytes ...ure-Fields-in-Rotated-PDF-Documents.csproj | 15 +++ .../Output/.gitkeep | 0 .../Program.cs | 106 ++++++++++++++++++ 7 files changed, 146 insertions(+) create mode 100644 Digital Signature/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Drawing-Signature-Fields-in-Rotated-PDF-Documents.sln create mode 100644 Digital Signature/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Data/PDF.pfx create mode 100644 Digital Signature/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Data/TestImage.png create mode 100644 Digital Signature/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Data/TestPDF.pdf create mode 100644 Digital Signature/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Drawing-Signature-Fields-in-Rotated-PDF-Documents.csproj create mode 100644 Digital Signature/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Output/.gitkeep create mode 100644 Digital Signature/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Program.cs diff --git a/Digital Signature/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Drawing-Signature-Fields-in-Rotated-PDF-Documents.sln b/Digital Signature/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Drawing-Signature-Fields-in-Rotated-PDF-Documents.sln new file mode 100644 index 00000000..f361430c --- /dev/null +++ b/Digital Signature/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Drawing-Signature-Fields-in-Rotated-PDF-Documents.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.13.35617.110 d17.13 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Drawing-Signature-Fields-in-Rotated-PDF-Documents", "Drawing-Signature-Fields-in-Rotated-PDF-Documents\Drawing-Signature-Fields-in-Rotated-PDF-Documents.csproj", "{DED69A8E-0D66-4E3A-BD90-F5EE9F2BD5C6}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {DED69A8E-0D66-4E3A-BD90-F5EE9F2BD5C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DED69A8E-0D66-4E3A-BD90-F5EE9F2BD5C6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DED69A8E-0D66-4E3A-BD90-F5EE9F2BD5C6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DED69A8E-0D66-4E3A-BD90-F5EE9F2BD5C6}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {7BE57722-9807-4418-9F64-8BCD78D871A0} + EndGlobalSection +EndGlobal diff --git a/Digital Signature/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Data/PDF.pfx b/Digital Signature/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Data/PDF.pfx new file mode 100644 index 0000000000000000000000000000000000000000..940afae4f3885dd4d6f8a86e086886372a7fd736 GIT binary patch literal 2582 zcmZWpXH=8f7X3&<5QrcedRIh|Vxm;3(NLrr0R=&V0Sq0K(2)UyB=p__QG-&Vk=_-C zUPPLJAc#_xq99p!gaZFFVqb?4*;f!m_9a$*gmVAwf^o5dXhg^+f(Y3_h(WpjOS2y5 zfgCWKTu-*zw+jP-I0hj^$RN?KXj@A(7nX_>zjnwoy*kiZGeov!AV)f^w7;u^;}5lJ zXYiY}+)FKaKj85^Az_NRpFf9gtgYxtwV5bYrq;?R)_{+8GBQ;iR=MhTBODsScSqO{ zEh^kpK>TqTr%N?Izi^8KV7YmAC zdL39$!MNGwVb|}a7Yp8;c-t&K;l?F~4HsaBC25qF1gX=z-PR_LPgalQLDL?8#Pgr_ zYSPb5DLHqi(|um^tSuybh~5uU?}wMKa>2=;;@QMwjDinNL6m)DLVj(*gR+*NK|5iX}!t~;p9??N#_%HVp%&^$lPqb!=zA7R0?!))7d2no3#+ zp6-`AX(Sa>)Liil+3zVep>GU@yxu&cejZqqTyjH@^DDC%HY24lr?TMi)S#Wp`SoAm zZ1c!5Kt3+RXVA33K2dr&Q~zyGvUtetYWK@_UBkNshralA=WC7ZW}I4w57x z_vEzR+`}v!%vbMHsxO>@@w6l{9z=?lwp}GO%D24@-(WBMDw$`7qK7K^yVqsvNh^8C z$%>isGWyJ>s>IZ1(w7?K>U_lA*s@U5ea__iohQeigV~iKwDW20Z7w5V?V00T2nl-qGy**(sG?>6Kq2g!ctfweG zQ{RKtx0$uBY5DU(NNwPaa?LHVcC56L>}pGy;I2x-li(tM5oG1eass8tZaY4fy}?#% zIB8$^mQJFHvMn5tkWp$sVX-lS$xrS~l)dxhsMN8{=hkrE+e)?GGCb&Vzm8JU9rJx= zV&}+mBjvGsRTe2BT1k0A$jBQ3_C54`2s3WxKW)mn$62^Df?EITCG()Su_Uj0TJL$> z*IdV+g4V=WVNs!5?=e)LCPGeEx#1=wV#`ErX60o2n>9hzmJIyYw7Xk}kGaoCqhA%c zBy`dPi`!jxx42amICSHm`2de}G~b8#)IIUjFoO3G8uZy!6iR1svUKZ+TZe-tO;s); z0{*loU3%tLno;NMbEzV*mKHJ>vn$I@X^u>6mMiqUs+NEvEwb)-RrQ8b4z0v|Qz#d1WXp0vUAEYG?wnl? z^6optk$=`CCqEJjfv^DpfUt*h%0t;8Y(zCaHY7&E954gi04Kl~@Bs*{!UKMQ6ky3Z ze>2{I3#+@p!ok2T7U#q2eE}Q`yZ+^p0x*B+0$80ha1-!F-268aj2u?MLGgVK#>)AhGkS?A!QcA0ctFS`%8gfA!imwu#{*1cKr4_0yhyv zaOpom98ek&Ok+`05F5a{GX9;g{r}=mymwK4SSJhhd+|pQ!LH0Pu?h(@%NW_#5J1%OCgNbiP*PdMSEm}JqyMaO*>O`pdy==>XFZvD(9@vBu&BKCC3pJ7mC6c zmj%0C9|f4K<_wzk5aof{{60LwKa;k(c9^Y znT=zn`=WnzJfhAA6qxH8c&*b$da6*P_fp)^6{mY2cir`KNYfXgFc1$&nmYnWvY}f< z2Kzg0m=nmuZr`j{?q;U;zOZ63;3?f#(|#`^0~7)gDX5w|{b<~t?l0!oVl@fs_^`D& znmkn#o$A&!UxC-lyvKBxa;a&uISBGcr%A;NjZ^w~BOxr`-O z$$8SdY<)rtd_(Vb(zMe>Y1y+}TCD6Z?~jSJi=3ZZcI9`DDpK$B^o#dZ zoyjiIxEX literal 0 HcmV?d00001 diff --git a/Digital Signature/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Data/TestImage.png b/Digital Signature/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Data/TestImage.png new file mode 100644 index 0000000000000000000000000000000000000000..35d18688b9c3609daf2343292f123eadbde4a6ed GIT binary patch literal 43478 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

via&PM0$18qbzJ6``MKC@6#iSEE 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 + + + Exe + net8.0 + Drawing_Signature_Fields_in_Rotated_PDF_Documents + enable + enable + + + + + + + diff --git a/Digital Signature/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Output/.gitkeep b/Digital Signature/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Output/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/Digital Signature/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Program.cs b/Digital Signature/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Program.cs new file mode 100644 index 00000000..5b544e9f --- /dev/null +++ b/Digital Signature/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Program.cs @@ -0,0 +1,106 @@ +using Syncfusion.Pdf; +using System.IO; +using Syncfusion.Pdf.Parsing; +using Syncfusion.Drawing; +using Syncfusion.Pdf.Graphics; +using Syncfusion.Pdf.Security; + +internal class Program +{ + static void Main(string[] args) + { + //Open the Word document file stream. + using (FileStream inputStream = new FileStream(Path.GetFullPath(@"Data/TestPDF.pdf"), FileMode.Open, FileAccess.Read)) + { + + PdfLoadedDocument pdfLoadedDocument = new PdfLoadedDocument(inputStream); + + PdfLoadedPage ldPage = pdfLoadedDocument.Pages[3] as PdfLoadedPage; + + //Create a certificate instance from a PFX file with a private key. + FileStream certificateStream = new FileStream(Path.GetFullPath(@"Data/PDF.pfx"), FileMode.Open, FileAccess.Read); + PdfCertificate pdfCert = new PdfCertificate(certificateStream, "password123"); + + PdfSignature signature = new PdfSignature(pdfLoadedDocument, ldPage, pdfCert, "Signature1"); + + RectangleF bounds = new RectangleF(new PointF(20, 20), new SizeF(240, 70)); + + + signature.Bounds = GetRelativeBounds(ldPage, bounds); + + PdfGraphics graphics = signature.Appearance.Normal.Graphics; + + FileStream imageStream = new FileStream(Path.GetFullPath(@"Data/TestImage.png"), FileMode.Open, FileAccess.Read); + //Set an image for signature field. + PdfBitmap signatureImage = new PdfBitmap(imageStream); + + RotateSignatureAppearance(signatureImage, signature.Appearance.Normal.Graphics, ldPage.Rotation, signature.Bounds); + + using (FileStream outputFileStream = new FileStream(Path.GetFullPath(@"Output/Output.pdf"), FileMode.Create, FileAccess.ReadWrite)) + { + //Save the PDF document to file stream. + pdfLoadedDocument.Save(outputFileStream); + } + //Closes the document + pdfLoadedDocument.Close(true); + + } + } + private static RectangleF GetRelativeBounds(PdfLoadedPage page, RectangleF bounds) + { + SizeF pagesize = page.Size; + RectangleF rectangle = bounds; + + if (page.Rotation == PdfPageRotateAngle.RotateAngle90) + { + rectangle.X = bounds.Y; + rectangle.Y = pagesize.Height - ((bounds.X + bounds.Width)); + rectangle.Width = bounds.Height; + rectangle.Height = bounds.Width; + } + else if (page.Rotation == PdfPageRotateAngle.RotateAngle270) + { + rectangle.Y = bounds.X; + rectangle.X = pagesize.Width - (bounds.Y + bounds.Height); + rectangle.Width = bounds.Height; + rectangle.Height = bounds.Width; + } + else if (page.Rotation == PdfPageRotateAngle.RotateAngle180) + { + rectangle.X = pagesize.Width - (bounds.X + bounds.Width); + rectangle.Y = pagesize.Height - (bounds.Y + bounds.Height); + } + return rectangle; + } + + private static void RotateSignatureAppearance(PdfImage image, PdfGraphics graphics, PdfPageRotateAngle angle, RectangleF bounds) + { + graphics.Save(); + + if (angle == PdfPageRotateAngle.RotateAngle90) + { + graphics.TranslateTransform(0, bounds.Height); + graphics.RotateTransform(-90); + graphics.DrawImage(image, new RectangleF(0, 0, bounds.Height, bounds.Width)); + } + else if (angle == PdfPageRotateAngle.RotateAngle180) + { + graphics.TranslateTransform(bounds.Width, bounds.Height); + graphics.RotateTransform(-180); + graphics.DrawImage(image, new RectangleF(0, 0, bounds.Width, bounds.Height)); + } + else if (angle == PdfPageRotateAngle.RotateAngle270) + { + graphics.TranslateTransform(bounds.Width, 0); + graphics.RotateTransform(-270); + graphics.DrawImage(image, new RectangleF(0, 0, bounds.Height, bounds.Width)); + } + else + { + graphics.DrawImage(image, new RectangleF(0, 0, bounds.Width, bounds.Height)); + } + graphics.Restore(); + } + +} + From db894a297dec6501d7747604a97f9d9e71446af8 Mon Sep 17 00:00:00 2001 From: Irfana Jaffer Sadhik Date: Tue, 25 Feb 2025 19:00:29 +0530 Subject: [PATCH 2/2] modified csproj --- .../Drawing-Signature-Fields-in-Rotated-PDF-Documents.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Digital Signature/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Drawing-Signature-Fields-in-Rotated-PDF-Documents.csproj b/Digital Signature/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Drawing-Signature-Fields-in-Rotated-PDF-Documents.csproj index 35a396f3..17578b3a 100644 --- a/Digital Signature/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Drawing-Signature-Fields-in-Rotated-PDF-Documents.csproj +++ b/Digital Signature/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Drawing-Signature-Fields-in-Rotated-PDF-Documents/Drawing-Signature-Fields-in-Rotated-PDF-Documents.csproj @@ -9,7 +9,7 @@ - +