|
@@ -45,104 +45,62 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
|
|
|
|
|
|
public string ViewerRegionName { get; set; }
|
|
|
|
|
|
- private ImageSource _imageSource = null;
|
|
|
- public ImageSource ImageSource
|
|
|
- {
|
|
|
- get { return _imageSource; }
|
|
|
- set
|
|
|
- {
|
|
|
- SetProperty(ref _imageSource, value);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
public WatermarkDocumentContentViewModel(IEventAggregator eventAggregator, IRegionManager regionManager)
|
|
|
{
|
|
|
this.regionManager = regionManager;
|
|
|
this.eventAggregator = eventAggregator;
|
|
|
eventAggregator.GetEvent<SetWatermarkEvent>().Subscribe(SetWatermark);
|
|
|
- eventAggregator.GetEvent<ConfirmEditToolsWatermarkEvent>().Subscribe(ConfirmEditToolsWatermark);
|
|
|
ViewerRegionName = RegionNames.WatermarkViwerRegionName;
|
|
|
|
|
|
}
|
|
|
|
|
|
- public void ConfirmEditToolsWatermark()
|
|
|
- {
|
|
|
- if (watermarkInfo != null)
|
|
|
- {
|
|
|
- CreateWatermark(PDFViewer.Document, true);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
public void SetWatermark(WatermarkInfo watermarkInfo)
|
|
|
{
|
|
|
this.watermarkInfo = watermarkInfo;
|
|
|
CreateWatermark(PDFViewer.Document);
|
|
|
- //PDFViewer.Document.PdfToImage("0-1", "C:\\Users\\kdanmobile\\Desktop\\888\\");
|
|
|
- //PDFViewer.Document.WriteToFilePath("C:\\Users\\kdanmobile\\Desktop\\888\\sb22222.pdf");
|
|
|
+ PDFViewer.Document.PdfToImage("0-1", "C:\\Users\\kdanmobile\\Desktop\\888\\");
|
|
|
+ PDFViewer.Document.WriteToFilePath("C:\\Users\\kdanmobile\\Desktop\\888\\sb22222_.pdf");
|
|
|
PDFViewer.InvalidChildVisual(false);
|
|
|
}
|
|
|
|
|
|
public void CreateWatermark(CPDFDocument document, bool IsNewDoc = false)
|
|
|
{
|
|
|
- if (watermarkInfo != null) {
|
|
|
- background = document.GetBackground();
|
|
|
-
|
|
|
- background.SetBackgroundType(C_Background_Type.BG_TYPE_COLOR);
|
|
|
-
|
|
|
- background.SetScale(1);
|
|
|
- background.SetColor(watermarkInfo.TextColor);
|
|
|
-
|
|
|
- background.SetRotation(0);
|
|
|
- background.SetOpacity(255);
|
|
|
- background.SetVertalign(C_Background_Vertalign.BG_VERTALIGN_CENTER);
|
|
|
- background.SetHorizalign(C_Background_Horizalign.BG_HORIZALIGN_CENTER);
|
|
|
- background.SetYOffset(0);
|
|
|
- background.SetXOffset(0);
|
|
|
- background.SetAllowsPrint(true);
|
|
|
- background.SetAllowsView(true);
|
|
|
- background.SetPages("0");
|
|
|
- background.Update();
|
|
|
- }
|
|
|
- //if (watermarkInfo != null)
|
|
|
- //{
|
|
|
- // document.DeleteWatermarks();
|
|
|
- // if (watermarkInfo.WatermarkType == C_Watermark_Type.WATERMARK_TYPE_TEXT)
|
|
|
- // {
|
|
|
- // watermark = document.InitWatermark(C_Watermark_Type.WATERMARK_TYPE_TEXT);
|
|
|
- // watermark.SetText(watermarkInfo.Text);
|
|
|
- // if (watermarkInfo.TextSize == null)
|
|
|
- // {
|
|
|
- // watermarkInfo.TextSize = "6";
|
|
|
- // }
|
|
|
- // watermark.SetFontName(watermarkInfo.FontName);
|
|
|
- // watermark.SetFontSize(float.Parse(watermarkInfo.TextSize));
|
|
|
- // watermark.SetTextRGBColor(watermarkInfo.TextColor);
|
|
|
- // }
|
|
|
- // else
|
|
|
- // {
|
|
|
-
|
|
|
- // watermark = document.InitWatermark(C_Watermark_Type.WATERMARK_TYPE_IMG);
|
|
|
- // if (watermarkInfo.ImageArray != null)
|
|
|
- // {
|
|
|
- // watermark.SetImage(watermarkInfo.ImageArray, watermarkInfo.ImageWidth, watermarkInfo.ImageHeight);
|
|
|
- // }
|
|
|
- // watermark.SetScale(0.1f);
|
|
|
- // }
|
|
|
- // watermark.SetRotation(watermarkInfo.Rotation);
|
|
|
- // watermark.SetOpacity(watermarkInfo.Opacity);
|
|
|
- // watermark.SetFront(watermarkInfo.IsFront);
|
|
|
- // watermark.SetVertalign(watermarkInfo.WatermarkVertalign);
|
|
|
- // watermark.SetHorizalign(watermarkInfo.WatermarkHorizalign);
|
|
|
- // watermark.SetFullScreen(watermarkInfo.Isfull);
|
|
|
- // watermark.SetVertOffset(watermarkInfo.VertOffset);
|
|
|
- // watermark.SetHorizOffset(watermarkInfo.HorizOffset);
|
|
|
- // watermark.SetHorizontalSpacing(watermarkInfo.HorizontalSpacing);
|
|
|
- // watermark.SetVerticalSpacing(watermarkInfo.VerticalSpacing);
|
|
|
- // if (IsNewDoc) { watermark.SetPages("0"); }
|
|
|
- // else { watermark.SetPages(watermarkInfo.PageRange); }
|
|
|
- // watermark.CreateWatermark();
|
|
|
- // watermark.UpdateWatermark();
|
|
|
- //}
|
|
|
+ if (watermarkInfo != null)
|
|
|
+ {
|
|
|
+ document.DeleteWatermarks();
|
|
|
+ if (watermarkInfo.WatermarkType == C_Watermark_Type.WATERMARK_TYPE_TEXT)
|
|
|
+ {
|
|
|
+ watermark = document.InitWatermark(C_Watermark_Type.WATERMARK_TYPE_TEXT);
|
|
|
+ watermark.SetText(watermarkInfo.Text);
|
|
|
+ watermark.SetFontName(watermarkInfo.FontName);
|
|
|
+ watermark.SetFontSize(watermarkInfo.TextSize);
|
|
|
+ watermark.SetTextRGBColor(watermarkInfo.TextColor);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+
|
|
|
+ watermark = document.InitWatermark(C_Watermark_Type.WATERMARK_TYPE_IMG);
|
|
|
+ if (watermarkInfo.ImageArray != null)
|
|
|
+ {
|
|
|
+ watermark.SetImage(watermarkInfo.ImageArray, watermarkInfo.ImageWidth, watermarkInfo.ImageHeight);
|
|
|
+ }
|
|
|
+ watermark.SetScale(0.1f);
|
|
|
+ }
|
|
|
+ watermark.SetRotation(watermarkInfo.Rotation);
|
|
|
+ watermark.SetOpacity(watermarkInfo.Opacity);
|
|
|
+ watermark.SetFront(watermarkInfo.IsFront);
|
|
|
+ watermark.SetVertalign(watermarkInfo.WatermarkVertalign);
|
|
|
+ watermark.SetHorizalign(watermarkInfo.WatermarkHorizalign);
|
|
|
+ watermark.SetFullScreen(watermarkInfo.Isfull);
|
|
|
+ watermark.SetVertOffset(watermarkInfo.VertOffset);
|
|
|
+ watermark.SetHorizOffset(watermarkInfo.HorizOffset);
|
|
|
+ watermark.SetHorizontalSpacing(watermarkInfo.HorizontalSpacing);
|
|
|
+ watermark.SetVerticalSpacing(watermarkInfo.VerticalSpacing);
|
|
|
+ if (IsNewDoc) { watermark.SetPages("0"); }
|
|
|
+ else { watermark.SetPages(watermarkInfo.PageRange); }
|
|
|
+ watermark.CreateWatermark();
|
|
|
+ watermark.UpdateWatermark();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|
|
@@ -156,21 +114,24 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
|
|
|
{
|
|
|
List<int> PageIndexLists = new List<int>();
|
|
|
foreach (DrawPageData drawPageData in e.DrawPages)
|
|
|
- {
|
|
|
- if(watermarkInfo != null) {
|
|
|
+ {
|
|
|
+ if (watermarkInfo != null)
|
|
|
+ {
|
|
|
char[] enumerationSeparator = new char[] { ',' };
|
|
|
char[] rangeSeparator = new char[] { '-' };
|
|
|
if (CommonHelper.GetPagesInRange(ref PageIndexLists, watermarkInfo.PageRange, Document.PageCount, enumerationSeparator, rangeSeparator, true))
|
|
|
{ //TODO
|
|
|
Trace.WriteLine(CommonHelper.GetPagesInRange(ref PageIndexLists, watermarkInfo.PageRange, Document.PageCount, enumerationSeparator, rangeSeparator, true));
|
|
|
Trace.WriteLine(drawPageData.PageIndex);
|
|
|
- foreach (var abbb in PageIndexLists ) {
|
|
|
+ foreach (var abbb in PageIndexLists)
|
|
|
+ {
|
|
|
|
|
|
- Trace.WriteLine("smgui _______"+abbb);
|
|
|
+ Trace.WriteLine("smgui _______" + abbb);
|
|
|
}
|
|
|
- if (PageIndexLists.Contains(drawPageData.PageIndex-1)) {
|
|
|
-
|
|
|
- WriteableBitmap waterMarkBitmap = GetWaterMark(PDFViewer.Document, e.Zoom, drawPageData.PageIndex);
|
|
|
+ if (PageIndexLists.Contains(drawPageData.PageIndex - 1))
|
|
|
+ {
|
|
|
+
|
|
|
+ WriteableBitmap waterMarkBitmap = GetWatermark(PDFViewer.Document, e.Zoom, drawPageData.PageIndex);
|
|
|
e.DrawContext.DrawImage(waterMarkBitmap, drawPageData.PageBound);
|
|
|
}
|
|
|
}
|
|
@@ -178,13 +139,13 @@ namespace PDF_Office.ViewModels.EditTools.Watermark
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- private WriteableBitmap GetWaterMark(CPDFDocument oldDoc, double zoom, int pageIndex)
|
|
|
+ private WriteableBitmap GetWatermark(CPDFDocument oldDoc, double zoom, int pageIndex)
|
|
|
{
|
|
|
Size pageSize = oldDoc.GetPageSize(pageIndex);
|
|
|
|
|
|
CPDFDocument newDoc = CPDFDocument.CreateDocument();
|
|
|
newDoc.InsertPage(0, pageSize.Width, pageSize.Height, null);
|
|
|
- CreateWatermark(newDoc,true);
|
|
|
+ CreateWatermark(newDoc, true);
|
|
|
CPDFPage newPage = newDoc.PageAtIndex(0);
|
|
|
double scale = 96.0 / 72.0;
|
|
|
zoom = zoom * scale;
|