using ComPDFKit.PDFDocument; using ComPDFKit.PDFWatermark; using Compdfkit_Tools.Helper; using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Forms; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; using System.Xml.Linq; using MessageBox = System.Windows.MessageBox; using Path = System.IO.Path; namespace Compdfkit_Tools.PDFControl { /// /// Interaction logic for WatermarkListDialog.xaml /// public partial class WatermarkListDialog : Window { private WatermarkData watermarkData; public WatermarkListDialog() { InitializeComponent(); Title = LanguageHelper.SecurityManager.GetString("Title_AddWatermark"); } private void NextBtn_Click(object sender, RoutedEventArgs e) { WatermarkDialog watermarkDialog = new WatermarkDialog { Owner = this }; watermarkDialog.WindowClosed += WatermarkDialog_WindowClosed; if (watermarkDialog.InitWithFileInfo(FileGridListWithPageRangeControl.FileForDisplay)) { watermarkDialog.ShowDialog(); } else { MessageBox.Show("No file selected."); } } private void WatermarkDialog_WindowClosed(object sender, WatermarkData watermarkData) { if (watermarkData != null) { this.watermarkData = watermarkData; var dialog = new FolderBrowserDialog(); if (dialog.ShowDialog() != System.Windows.Forms.DialogResult.OK) { return; } else { var path = dialog.SelectedPath; foreach (var fileInfo in FileGridListWithPageRangeControl.FileInfoDataList) { if (watermarkData.Type == C_Watermark_Type.WATERMARK_TYPE_TEXT) { UpdateByTextWatermarkData(fileInfo.Document, fileInfo.PageRangeList); } else if (watermarkData.Type == C_Watermark_Type.WATERMARK_TYPE_IMG) { UpdateByImageWatermarkData(fileInfo.Document, fileInfo.PageRangeList); } else { return; } string savePath = Path.Combine(path, Path.GetFileNameWithoutExtension(fileInfo.Document.FileName) + "_" + LanguageHelper.SecurityManager.GetString("FileName_Watermark")) + ".pdf"; fileInfo.Document.WriteToFilePath(savePath); } System.Diagnostics.Process.Start("explorer.exe", "/select," + path + Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension(FileGridListWithPageRangeControl.FileInfoDataList[0].Document.FileName) + "_Watermark.pdf"); } } Close(); } private void UpdateByImageWatermarkData(CPDFDocument document, List pageRangeList) { CPDFWatermark watermark = document.InitWatermark(watermarkData.Type); Bitmap bitmap = new Bitmap(watermarkData.ImagePath); bitmap = CommonHelper.ConvertTo32bppArgb(bitmap); byte[] byteArray = CommonHelper.ConvertBitmapToByteArray(bitmap); watermark.SetImage(byteArray, bitmap.Width, bitmap.Height); watermark.SetScale((float)(watermarkData.ImageScale / 100.0)); UpdateByCommonWatermarkData(watermark, pageRangeList); } private void UpdateByTextWatermarkData(CPDFDocument document, List pageRangeList) { CPDFWatermark watermark = document.InitWatermark(watermarkData.Type); watermark.SetText(watermarkData.Text); watermark.SetFontName(watermarkData.FontName); watermark.SetTextRGBColor(watermarkData.Color); watermark.SetFontSize(watermarkData.FontSize); watermark.SetScale(1); UpdateByCommonWatermarkData(watermark, pageRangeList); } private void UpdateByCommonWatermarkData(CPDFWatermark watermark, List pageRangeList) { for (int i = 0; i < pageRangeList.Count; i++) { pageRangeList[i]--; } watermark.SetPages(CommonHelper.GetPageParmFromList(pageRangeList)); watermark.SetRotation((float)(watermarkData.Rotation * Math.PI / 180.0)); watermark.SetOpacity(watermarkData.Opacity); watermark.SetVertalign((C_Watermark_Vertalign)(watermarkData.Align / 3)); watermark.SetHorizalign((C_Watermark_Horizalign)(watermarkData.Align % 3)); watermark.SetVertOffset(watermarkData.VertOffset); watermark.SetHorizOffset(watermarkData.HorizOffset); watermark.SetFront(watermarkData.IsFront); watermark.SetFullScreen(watermarkData.IsFullScreen); watermark.SetVerticalSpacing(watermarkData.VerticalSpacing); watermark.SetHorizontalSpacing(watermarkData.HorizontalSpacing); watermark.CreateWatermark(); } private void CancelBtn_Click(object sender, RoutedEventArgs e) { Close(); } protected override void OnClosed(EventArgs e) { foreach (var fileInfo in FileGridListWithPageRangeControl.FileInfoDataList) { fileInfo.Document.Release(); } base.OnClosed(e); } } }