WatermarkTest.cs 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. using ComPDFKit.PDFDocument;
  2. using ComPDFKit.PDFWatermark;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Drawing;
  6. using System.Drawing.Imaging;
  7. using System.IO;
  8. using System.Linq;
  9. using System.Runtime.InteropServices;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. using System.Xml.Linq;
  13. namespace WatermarkTest
  14. {
  15. internal class WatermarkTest
  16. {
  17. static private string outputPath = Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(System.IO.Directory.GetCurrentDirectory()))) + "\\Output\\Watermark";
  18. static void Main(string[] args)
  19. {
  20. Console.WriteLine("Running Watermark test sample…\r\n");
  21. SDKLicenseHelper.LicenseVerify();
  22. CPDFDocument document = CPDFDocument.InitWithFilePath("CommonFivePage.pdf");
  23. if (!Directory.Exists(outputPath))
  24. {
  25. Directory.CreateDirectory(outputPath);
  26. }
  27. if (AddTextWatermark(document))
  28. {
  29. Console.WriteLine("Add text watermark done.");
  30. }
  31. else
  32. {
  33. Console.WriteLine("Add text watermark failed.");
  34. }
  35. Console.WriteLine("--------------------");
  36. document.Release();
  37. document = CPDFDocument.InitWithFilePath("CommonFivePage.pdf");
  38. if (AddImageWatermark(document))
  39. {
  40. Console.WriteLine("Add image watermark done.");
  41. }
  42. else
  43. {
  44. Console.WriteLine("Add image watermark failed.");
  45. }
  46. Console.WriteLine("--------------------");
  47. CPDFDocument textWatermarkDocument = CPDFDocument.InitWithFilePath("Watermark.pdf");
  48. if (DeleteWatermark(textWatermarkDocument))
  49. {
  50. Console.WriteLine("Delete watermark done.");
  51. }
  52. else
  53. {
  54. Console.WriteLine("Delete watermark failed.");
  55. }
  56. Console.WriteLine("--------------------");
  57. Console.WriteLine("Done!");
  58. Console.WriteLine("--------------------");
  59. Console.ReadLine();
  60. }
  61. static private bool AddTextWatermark(CPDFDocument document)
  62. {
  63. CPDFWatermark watermark = document.InitWatermark(C_Watermark_Type.WATERMARK_TYPE_TEXT);
  64. watermark.SetText("test");
  65. watermark.SetFontName("Helvetica");
  66. watermark.SetPages("0-3");
  67. byte[] color = { 255, 0, 0 };
  68. watermark.SetTextRGBColor(color);
  69. watermark.SetScale(2);
  70. watermark.SetRotation(0);
  71. watermark.SetOpacity(120);
  72. watermark.SetVertalign(C_Watermark_Vertalign.WATERMARK_VERTALIGN_CENTER);
  73. watermark.SetHorizalign(C_Watermark_Horizalign.WATERMARK_HORIZALIGN_CENTER);
  74. watermark.SetVertOffset(0);
  75. watermark.SetHorizOffset(0);
  76. watermark.SetFront(true);
  77. watermark.SetFullScreen(true);
  78. watermark.SetVerticalSpacing(10);
  79. watermark.SetHorizontalSpacing(10);
  80. watermark.CreateWatermark();
  81. string path = outputPath + "\\AddTextWatermarkTest.pdf";
  82. if (!document.WriteToFilePath(path))
  83. {
  84. return false;
  85. }
  86. Console.WriteLine("Browse the changed file in " + path);
  87. return true;
  88. }
  89. public static byte[] BitmapToByteArray(Bitmap bitmap)
  90. {
  91. BitmapData bmpdata = null;
  92. try
  93. {
  94. bmpdata = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadOnly, bitmap.PixelFormat);
  95. int numbytes = bmpdata.Stride * bitmap.Height;
  96. byte[] bytedata = new byte[numbytes];
  97. IntPtr ptr = bmpdata.Scan0;
  98. Marshal.Copy(ptr, bytedata, 0, numbytes);
  99. return bytedata;
  100. }
  101. finally
  102. {
  103. if (bmpdata != null)
  104. bitmap.UnlockBits(bmpdata);
  105. }
  106. }
  107. static private bool AddImageWatermark(CPDFDocument document)
  108. {
  109. CPDFWatermark watermark = document.InitWatermark(C_Watermark_Type.WATERMARK_TYPE_IMG);
  110. Bitmap bitmap = new Bitmap("logo.png");
  111. watermark.SetImage(BitmapToByteArray(bitmap), bitmap.Width, bitmap.Height);
  112. watermark.SetPages("0-3");
  113. watermark.SetScale(2);
  114. watermark.SetRotation(1);
  115. watermark.SetOpacity(128);
  116. watermark.SetVertalign(C_Watermark_Vertalign.WATERMARK_VERTALIGN_CENTER);
  117. watermark.SetHorizalign(C_Watermark_Horizalign.WATERMARK_HORIZALIGN_CENTER);
  118. watermark.SetVertOffset(0);
  119. watermark.SetHorizOffset(0);
  120. watermark.SetFront(false);
  121. watermark.SetFullScreen(true);
  122. watermark.SetVerticalSpacing(10);
  123. watermark.SetHorizontalSpacing(10);
  124. watermark.CreateWatermark();
  125. watermark.UpdateWatermark();
  126. string path = outputPath + "\\AddImageWatermarkTest.pdf";
  127. if (!document.WriteToFilePath(path))
  128. {
  129. return false;
  130. }
  131. Console.WriteLine("Browse the changed file in " + path);
  132. return true;
  133. }
  134. static private bool DeleteWatermark(CPDFDocument watermarkDocument)
  135. {
  136. watermarkDocument.DeleteWatermarks();
  137. string path = outputPath + "\\DeleteWatermarkTest.pdf";
  138. if (!watermarkDocument.WriteToFilePath(path))
  139. {
  140. return false;
  141. }
  142. Console.WriteLine("Browse the changed file in " + path);
  143. return true;
  144. }
  145. }
  146. }