Browse Source

PDFView(ios) - 水印12/28

yangliuhua 2 years ago
parent
commit
d6a332a0f4

+ 2 - 2
PDFViewer.xcodeproj/project.pbxproj

@@ -219,11 +219,11 @@
 			isa = PBXGroup;
 			children = (
 				ECD0AC1E2928EF030091B6EB /* sources */,
-				ECD0ABEB2928ED9A0091B6EB /* CPDFImagePreview.h */,
 				ECD0ABED2928ED9A0091B6EB /* CPDFImageView.h */,
 				ECD0ABE82928ED990091B6EB /* CPDFImageView.m */,
-				ECD0ABEF2928ED9A0091B6EB /* CPDFTextPreview.h */,
+				ECD0ABEB2928ED9A0091B6EB /* CPDFImagePreview.h */,
 				ECD0ABEC2928ED9A0091B6EB /* CPDFImagePreview.m */,
+				ECD0ABEF2928ED9A0091B6EB /* CPDFTextPreview.h */,
 				ECD0ABE52928ED990091B6EB /* CPDFTextPreview.m */,
 				ECD0ABE92928ED990091B6EB /* CPDFTextView.h */,
 				ECD0ABEA2928ED990091B6EB /* CPDFTextView.m */,

+ 2 - 1
PDFViewer/Controller/CPDFAddViewController.h

@@ -16,6 +16,7 @@ NS_ASSUME_NONNULL_BEGIN
 @protocol WaterMarkModelDataDelegate <NSObject>
 
 - (void)changeTextModel:(CPDFDataModel *)dataModel;
+- (void)deleteTextModel:(CPDFWatermark *)waterMark;
 - (void)changeImageModel:(CPDFDataModel *)dataModel;
 
 @end
@@ -28,7 +29,7 @@ NS_ASSUME_NONNULL_BEGIN
 @property (nonatomic,strong) CPDFImageViewController *imageViewController;
 @property (nonatomic,strong) CPDFDocument *document;
 
-- (instancetype)initWithImage:(UIImage *)image withDocument:(CPDFDocument *)document;
+- (instancetype)initWithDocument:(CPDFDocument *)document;
 
 @end
 

+ 134 - 101
PDFViewer/Controller/CPDFAddViewController.m

@@ -46,12 +46,15 @@
 
 #pragma mark - Initializers
 
-- (instancetype)initWithImage:(UIImage *)image withDocument:(CPDFDocument *)document{
+- (instancetype)initWithDocument:(CPDFDocument *)document{
     self = [super init];
     if (self) {
-        _image = image;
-        _imageSize = image.size;
         _document = document;
+        
+        CPDFPage *pdfPage = [document pageAtIndex:0];
+        CGSize imageSize = [document pageSizeAtIndex:0];
+        _image = [pdfPage thumbnailOfSize:imageSize];
+        _imageSize = _image.size;
     }
     return self;
 }
@@ -91,113 +94,114 @@
 - (void)addConstraint {
     
     if ([UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeRight || [UIDevice currentDevice].orientation == UIDeviceOrientationLandscapeLeft || [UIDevice currentDevice].orientation == UIDeviceOrientationPortraitUpsideDown) {
-        [_segmentedControl mas_makeConstraints:^(MASConstraintMaker *make) {
-            make.top.equalTo(self.view.mas_top).offset(43.6);
-            make.width.equalTo(self.view.mas_width);
-            make.height.equalTo(@(self.view.bounds.size.height / 13));
-        }];
-        
-        [_textViewController.view mas_makeConstraints:^(MASConstraintMaker *make) {
-            make.top.equalTo(_segmentedControl.mas_bottom).offset(0);
-            make.width.equalTo(_segmentedControl.mas_width);
-            make.bottom.equalTo(self.view).offset(-34);
-        }];
-        [_imageViewController.view mas_makeConstraints:^(MASConstraintMaker *make) {
-            make.top.equalTo(_segmentedControl.mas_bottom).offset(0);
-            make.width.equalTo(_segmentedControl.mas_width);
-            make.bottom.equalTo(self.view).offset(-34);
-        }];
-        
-        [_textViewController.textView mas_remakeConstraints:^(MASConstraintMaker *make) {
-            make.right.equalTo(self.view.mas_right).offset(-38);
-            make.height.equalTo(@205);
-            make.width.equalTo(@393);
-            make.bottom.equalTo(self.view.mas_bottom).offset(-74);
-        }];
-        [_textViewController.textPreview mas_remakeConstraints:^(MASConstraintMaker *make) {
-            make.top.equalTo(self.segmentedControl.mas_bottom).offset(10);
-            make.right.equalTo(_textViewController.textView.mas_left).offset(-5);
-            make.left.equalTo(self.view.mas_left).offset(0);
-            make.bottom.equalTo(self.view.mas_bottom).offset(-34);
-        }];
-        
-        [_imageViewController.imageView mas_remakeConstraints:^(MASConstraintMaker *make) {
-            make.right.equalTo(self.view.mas_right).offset(-38);
-            make.height.equalTo(@205);
-            make.width.equalTo(@393);
-            make.bottom.equalTo(self.view.mas_bottom).offset(-74);
-        }];
-        [_imageViewController.imagePreview mas_remakeConstraints:^(MASConstraintMaker *make) {
-            make.top.equalTo(self.segmentedControl.mas_bottom).offset(10);
-            make.right.equalTo(_imageViewController.imageView.mas_left).offset(-5);
-            make.left.equalTo(self.view.mas_left).offset(0);
-            make.bottom.equalTo(self.view.mas_bottom).offset(-34);
-        }];
-        
-        [_textViewController.textPreview.documentView mas_remakeConstraints:^(MASConstraintMaker *make) {
-            make.centerX.equalTo(_textViewController.textPreview.mas_centerX);
-            make.centerY.equalTo(_textViewController.textPreview.mas_centerY);
-            make.width.equalTo(@(_imageSize.width / 10));
-            make.height.equalTo(@(_imageSize.height / 10));
-        }];
-        [_imageViewController.imagePreview.documentView mas_remakeConstraints:^(MASConstraintMaker *make) {
-            make.centerX.equalTo(_imageViewController.imagePreview.mas_centerX);
-            make.centerY.equalTo(_imageViewController.imagePreview.mas_centerY);
-            make.width.equalTo(@(_imageSize.width / 10));
-            make.height.equalTo(@(_imageSize.height / 10));
-        }];
+        [self addSideConstraint];
     } else {
-        [_segmentedControl mas_makeConstraints:^(MASConstraintMaker *make) {
-            make.top.equalTo(self.view.mas_top).offset(83.6);
-            make.width.equalTo(self.view.mas_width);
-            make.height.equalTo(@(self.view.bounds.size.height / 20));
-        }];
-        
-        [_textViewController.view mas_makeConstraints:^(MASConstraintMaker *make) {
-            make.top.equalTo(_segmentedControl.mas_bottom).offset(0);
-            make.width.equalTo(_segmentedControl.mas_width);
-            make.bottom.equalTo(self.view).offset(-34);
-        }];
-        [_imageViewController.view mas_makeConstraints:^(MASConstraintMaker *make) {
-            make.top.equalTo(_segmentedControl.mas_bottom).offset(0);
-            make.width.equalTo(_segmentedControl.mas_width);
-            make.bottom.equalTo(self.view).offset(-34);
-        }];
-        [_textViewController.textPreview.documentView mas_makeConstraints:^(MASConstraintMaker *make) {
-            make.centerX.equalTo(_textViewController.textPreview.mas_centerX);
-            make.centerY.equalTo(_textViewController.textPreview.mas_centerY);
-            make.width.equalTo(@(_imageSize.width / 8));
-            make.height.equalTo(@(_imageSize.height / 8));
-        }];
-        [_imageViewController.imagePreview.documentView mas_makeConstraints:^(MASConstraintMaker *make) {
-            make.centerX.equalTo(_imageViewController.imagePreview.mas_centerX);
-            make.centerY.equalTo(_imageViewController.imagePreview.mas_centerY);
-            make.width.equalTo(@(_imageSize.width / 8));
-            make.height.equalTo(@(_imageSize.height / 8));
-        }];
+        [self addNomalConstraint];
     }
 }
 
+- (void)addSideConstraint {
+    [_segmentedControl mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.view.mas_top).offset(43.6);
+        make.width.equalTo(self.view.mas_width);
+        make.height.equalTo(@(self.view.bounds.size.height / 13));
+    }];
+    
+    [_textViewController.view mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(_segmentedControl.mas_bottom).offset(0);
+        make.width.equalTo(_segmentedControl.mas_width);
+        make.bottom.equalTo(self.view).offset(-34);
+    }];
+    [_imageViewController.view mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(_segmentedControl.mas_bottom).offset(0);
+        make.width.equalTo(_segmentedControl.mas_width);
+        make.bottom.equalTo(self.view).offset(-34);
+    }];
+    
+    [_textViewController.textView mas_remakeConstraints:^(MASConstraintMaker *make) {
+        make.right.equalTo(self.view.mas_right).offset(-38);
+        make.height.equalTo(@205);
+        make.width.equalTo(@393);
+        make.bottom.equalTo(self.view.mas_bottom).offset(-74);
+    }];
+    [_textViewController.textPreview mas_remakeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.segmentedControl.mas_bottom).offset(10);
+        make.right.equalTo(_textViewController.textView.mas_left).offset(-5);
+        make.left.equalTo(self.view.mas_left).offset(0);
+        make.bottom.equalTo(self.view.mas_bottom).offset(-34);
+    }];
+    
+    [_imageViewController.imageView mas_remakeConstraints:^(MASConstraintMaker *make) {
+        make.right.equalTo(self.view.mas_right).offset(-38);
+        make.height.equalTo(@205);
+        make.width.equalTo(@393);
+        make.bottom.equalTo(self.view.mas_bottom).offset(-74);
+    }];
+    [_imageViewController.imagePreview mas_remakeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.segmentedControl.mas_bottom).offset(10);
+        make.right.equalTo(_imageViewController.imageView.mas_left).offset(-5);
+        make.left.equalTo(self.view.mas_left).offset(0);
+        make.bottom.equalTo(self.view.mas_bottom).offset(-34);
+    }];
+    
+    [_textViewController.textPreview.documentView mas_remakeConstraints:^(MASConstraintMaker *make) {
+        make.centerX.equalTo(_textViewController.textPreview.mas_centerX);
+        make.centerY.equalTo(_textViewController.textPreview.mas_centerY);
+        make.width.equalTo(@(_imageSize.width / 10));
+        make.height.equalTo(@(_imageSize.height / 10));
+    }];
+    [_imageViewController.imagePreview.documentView mas_remakeConstraints:^(MASConstraintMaker *make) {
+        make.centerX.equalTo(_imageViewController.imagePreview.mas_centerX);
+        make.centerY.equalTo(_imageViewController.imagePreview.mas_centerY);
+        make.width.equalTo(@(_imageSize.width / 10));
+        make.height.equalTo(@(_imageSize.height / 10));
+    }];
+}
+
+- (void)addNomalConstraint {
+    [_segmentedControl mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(self.view.mas_top).offset(83.6);
+        make.width.equalTo(self.view.mas_width);
+        make.height.equalTo(@(self.view.bounds.size.height / 20));
+    }];
+    
+    [_textViewController.view mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(_segmentedControl.mas_bottom).offset(0);
+        make.width.equalTo(_segmentedControl.mas_width);
+        make.bottom.equalTo(self.view).offset(-34);
+    }];
+    [_imageViewController.view mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.top.equalTo(_segmentedControl.mas_bottom).offset(0);
+        make.width.equalTo(_segmentedControl.mas_width);
+        make.bottom.equalTo(self.view).offset(-34);
+    }];
+    [_textViewController.textPreview.documentView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.centerX.equalTo(_textViewController.textPreview.mas_centerX);
+        make.centerY.equalTo(_textViewController.textPreview.mas_centerY);
+        make.width.equalTo(@(_imageSize.width / 8));
+        make.height.equalTo(@(_imageSize.height / 8));
+    }];
+    [_imageViewController.imagePreview.documentView mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.centerX.equalTo(_imageViewController.imagePreview.mas_centerX);
+        make.centerY.equalTo(_imageViewController.imagePreview.mas_centerY);
+        make.width.equalTo(@(_imageSize.width / 8));
+        make.height.equalTo(@(_imageSize.height / 8));
+    }];
+}
+
 #pragma mark - Accessors
 
 - (NSArray *)dataArray {
     if (!_dataArray) {
         _dataArray = [NSMutableArray array];
-        
-        CPDFWatermark *dataWater = [[CPDFWatermark alloc] init];
-        
+    
         NSArray *waterArray = [_document watermarks];
         
         for (NSInteger i = 0; i < waterArray.count; i++) {
-            CPDFDataModel *dataModel = [[CPDFDataModel alloc] init];
+            CPDFWatermark *dataWater = [[CPDFWatermark alloc] init];
             dataWater = waterArray[i];
-            dataModel.text = dataWater.text;
-            dataModel.textColor = dataWater.textColor;
-            dataModel.watermarkScale = dataWater.scale;
-            dataModel.watermarkOpacity = dataWater.opacity;
-            dataModel.watermarkRotation = dataWater.rotation;
             
-            [_dataArray addObject:dataModel];
+            [_dataArray addObject:dataWater];
         }
     }
     
@@ -219,10 +223,39 @@
         cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:path];
     }
     
-    cell.textLabel.text = [self.dataArray[indexPath.row] text];
+    if ([self.dataArray[indexPath.row] text]) {
+        cell.textLabel.text = [self.dataArray[indexPath.row] text];
+    } else {
+        cell.imageView.image = [self.dataArray[indexPath.row] image];
+    }
+    
+    
     return cell;
 }
 
+#pragma mark - UITableViewDelegate
+
+- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
+    return UITableViewCellEditingStyleDelete;
+}
+
+- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
+    if (editingStyle == UITableViewCellEditingStyleDelete) {
+        [self.delegate deleteTextModel:self.dataArray[indexPath.row]];
+        [self.dataArray removeObjectAtIndex:indexPath.row];
+        
+        [tableView beginUpdates];
+        [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
+        [tableView endUpdates];
+    }
+}
+
+- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath {
+    CPDFWatermark *dataWater = _dataArray[sourceIndexPath.row];
+    [_dataArray removeObject:dataWater];
+    [_dataArray insertObject:dataWater atIndex:destinationIndexPath.row];
+}
+
 #pragma mark - Actons
 
 - (void)onClickedDoneBtn {
@@ -259,15 +292,15 @@
 
 - (void)editClick {
     if (self.editView.center.x < 50) {
-        [_editView mas_makeConstraints:^(MASConstraintMaker *make) {
+        [_editView mas_remakeConstraints:^(MASConstraintMaker *make) {
             make.left.equalTo(self.view.mas_left);
             make.top.equalTo(self.textViewController.textPreview.mas_top);
             make.bottom.equalTo(self.textViewController.textPreview.mas_bottom);
-            make.width.mas_equalTo(150);
+            make.width.mas_equalTo(200);
         }];
         
         [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^{
-            self.editView.center = CGPointMake(self.editView.center.x + 150, self.editView.center.y);
+            self.editView.center = CGPointMake(self.editView.center.x + 200, self.editView.center.y);
         } completion:nil];
     }
 }
@@ -275,7 +308,7 @@
 - (void)cancelClick {
     if (self.editView.center.x > 0) {
         [UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^{
-            self.editView.center = CGPointMake(self.editView.center.x - 150, self.editView.center.y);
+            self.editView.center = CGPointMake(self.editView.center.x - 200, self.editView.center.y);
         } completion:nil];
     }
 }

+ 41 - 14
PDFViewer/Controller/CPDFImageViewController.m

@@ -19,6 +19,8 @@
 
 @property (nonatomic,strong) CPDFDrawView *drawView;
 @property (nonatomic,strong) CPDFClipView *cliView;
+@property (nonatomic,assign) CGAffineTransform transform1;
+@property (nonatomic,assign) CGAffineTransform transform2;
 
 @end
 
@@ -87,6 +89,9 @@
     _dataModel.watermarkScale = 1;
     _dataModel.isTile = NO;
     _dataModel.watermarkRotation = 0;
+    _dataModel.horizontalSpacing = 100;
+    _dataModel.verticalSpacing = 100;
+    
     _imageView.horizontalField.text = 0;
     _imageView.verticalField.text = 0;
     _imageView.horizontalField.enabled = NO;
@@ -138,7 +143,14 @@
 - (void)rotateWatermarkView:(UIPanGestureRecognizer *)recognizer {
     CGPoint point = [recognizer translationInView:_imagePreview];
     CGFloat radian = atan2(point.x + _imagePreview.center.x - _imagePreview.watermarkView.center.x,point.y + _imagePreview.center.y - _imagePreview.watermarkView.center.y);
-    _imagePreview.watermarkView.transform = CGAffineTransformMakeRotation(-radian);
+    
+    if (self.dataModel.watermarkScale == 1) {
+        _imagePreview.watermarkView.transform = CGAffineTransformMakeRotation(-radian);
+    } else {
+        _imagePreview.watermarkView.transform = CGAffineTransformRotate(self.transform2, -radian);
+    }
+    
+    _transform1 = CGAffineTransformMakeRotation(-radian);
     _dataModel.watermarkRotation = (-radian) * 180 / M_PI;
 }
 
@@ -176,19 +188,30 @@
     [_dataModel setWatermarkOpacity:1 - sender.value];
 }
 
+/*
+    this had core was deleted:
+ //    _watermarkFrame.size.width = sender.value * [UIImage imageNamed:_dataModel.imagePath].size.width;
+ //    _watermarkFrame.size.height = sender.value * [UIImage imageNamed:_dataModel.imagePath].size.height;
+ //    _watermarkFrame.size.width = sender.value * 33;
+ //    _watermarkFrame.size.height = sender.value * 33;
+ //
+ //    _watermarkFrame.origin.x = _imagePreview.watermarkView.frame.origin.x;
+ //    _watermarkFrame.origin.y = _imagePreview.watermarkView.frame.origin.y;
+ //    _imagePreview.watermarkView.frame = _watermarkFrame;
+ //    _imagePreview.watermarkFrame = _watermarkFrame;
+ */
+
 - (void)onImageScaleChanged:(UISlider *)sender {
-    sender.minimumValue = 1;
-    sender.maximumValue = 3;
+    sender.minimumValue = 0.5;
+    sender.maximumValue = 2;
     
-//    _watermarkFrame.size.width = sender.value * [UIImage imageNamed:_dataModel.imagePath].size.width;
-//    _watermarkFrame.size.height = sender.value * [UIImage imageNamed:_dataModel.imagePath].size.height;
-    _watermarkFrame.size.width = sender.value * 33;
-    _watermarkFrame.size.height = sender.value * 33;
-    
-    _watermarkFrame.origin.x = _imagePreview.watermarkView.frame.origin.x;
-    _watermarkFrame.origin.y = _imagePreview.watermarkView.frame.origin.y;
-    _imagePreview.watermarkView.frame = _watermarkFrame;
-    _imagePreview.watermarkFrame = _watermarkFrame;
+    if (self.dataModel.watermarkRotation) {
+        _imagePreview.watermarkView.transform = CGAffineTransformScale(self.transform1, sender.value, sender.value);
+    } else {
+            _imagePreview.watermarkView.transform = CGAffineTransformMakeScale(sender.value, sender.value);
+    }
+
+    _transform2 = CGAffineTransformMakeScale(sender.value, sender.value);
     
     [_imagePreview.rotationBtn mas_remakeConstraints:^(MASConstraintMaker *make) {
         make.top.equalTo(_imagePreview.watermarkView.mas_bottom).offset(-10);
@@ -266,11 +289,15 @@
 
 - (void)horizontalChange:(UITextField *)text {
     [_drawView setHorizontal:[text.text floatValue]];
+    _dataModel.horizontalSpacing = [text.text floatValue];
+    
     [_drawView setNeedsDisplay];
 }
 
 - (void)verticalChage:(UITextField *)text {
     [_drawView setVertical:[text.text floatValue]];
+    _dataModel.verticalSpacing = [text.text floatValue];
+    
     [_drawView setNeedsDisplay];
 }
 
@@ -280,8 +307,8 @@
 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<UIImagePickerControllerInfoKey,id> *)info {
     UIImage *image = info[UIImagePickerControllerOriginalImage];
     CGSize size;
-    size.width = image.size.width/10;
-    size.height = image.size.width/10;
+    size.width = image.size.width / 30;
+    size.height = image.size.height / 30;
     _imagePreview.watermarkView.image = [self imageWithImageSimple:image scaledToSize:size];
     _dataModel.image = [self imageWithImageSimple:image scaledToSize:size];
     [_imagePreview.watermarkView sizeToFit];

+ 5 - 0
PDFViewer/Controller/CPDFTextViewController.m

@@ -53,6 +53,9 @@
     _dataModel.watermarkScale = 1;
     _dataModel.isTile = NO;
     _dataModel.watermarkRotation = 0;
+    _dataModel.verticalSpacing = 100;
+    _dataModel.horizontalSpacing = 100;
+    
     _textPreview.watermarkLabel.text = _dataModel.text;
     _textView.horizontalField.text = 0;
     _textView.verticalField.text = 0;
@@ -192,11 +195,13 @@
 
 - (void)horizontalChange:(UITextField *)text {
     [_drawView setHorizontal:[text.text floatValue]];
+    _dataModel.horizontalSpacing = [text.text floatValue];
     [_drawView setNeedsDisplay];
 }
 
 - (void)verticalChage:(UITextField *)text {
     [_drawView setVertical:[text.text floatValue]];
+    _dataModel.verticalSpacing = [text.text floatValue];
     [_drawView setNeedsDisplay];
 }
 

+ 21 - 9
PDFViewer/Controller/CPDFViewController.m

@@ -67,7 +67,7 @@
 - (void)onClickedOkbtn {
     UIAlertController *alertController = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];
     UIAlertAction *addWatermarkAction = [UIAlertAction actionWithTitle:@"Add Watermark" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
-        self.addWaterMarkViewController = [[CPDFAddViewController alloc] initWithImage:self.image withDocument:self.pdfDocument];
+        self.addWaterMarkViewController = [[CPDFAddViewController alloc] initWithDocument:self.pdfDocument];
         self.addWaterMarkViewController.delegate = self;
         
         [self.navigationController pushViewController:self.addWaterMarkViewController animated:YES];
@@ -95,7 +95,7 @@
     
     _textWatermark.opacity = dataModel.watermarkOpacity;
     
-    _textWatermark.scale = dataModel.watermarkScale;
+    _textWatermark.scale = dataModel.watermarkScale * 2;
     
     _textWatermark.isTilePage = dataModel.isTile;
     
@@ -105,8 +105,8 @@
     _textWatermark.rotation = dataModel.watermarkRotation;
     
     if (_textWatermark.isTilePage) {
-        _textWatermark.verticalSpacing = [self.addWaterMarkViewController.textViewController.textView.verticalField.text floatValue];
-        _textWatermark.horizontalSpacing = [self.addWaterMarkViewController.textViewController.textView.horizontalField.text floatValue];
+        _textWatermark.verticalSpacing = dataModel.verticalSpacing;
+        _textWatermark.horizontalSpacing = dataModel.horizontalSpacing;
     }
     
     if (dataModel.pageString) {
@@ -126,7 +126,7 @@
     
     _imageWatermark.opacity = dataModel.watermarkOpacity;
     
-    _imageWatermark.scale = dataModel.watermarkScale;
+    _imageWatermark.scale = dataModel.watermarkScale * 1.7;
     
     _imageWatermark.isTilePage = dataModel.isTile;
     
@@ -136,8 +136,8 @@
     _imageWatermark.rotation = dataModel.watermarkRotation;
     
     if (_imageWatermark.isTilePage) {
-        _imageWatermark.verticalSpacing = [self.addWaterMarkViewController.imageViewController.imageView.verticalField.text floatValue];
-        _imageWatermark.horizontalSpacing = [self.addWaterMarkViewController.imageViewController.imageView.horizontalField.text floatValue];
+        _imageWatermark.verticalSpacing = dataModel.verticalSpacing;
+        _imageWatermark.horizontalSpacing = dataModel.horizontalSpacing;
     }
     
     if (dataModel.pageString) {
@@ -146,8 +146,20 @@
     
     [_pdfView.document addWatermark:_imageWatermark];
     [_pdfView layoutDocumentView];
-//        NSURL *url = [NSURL fileURLWithPath:_path];
-//        [_pdfView.document writeContentToURL:url];
+    NSURL *url = [NSURL fileURLWithPath:_path];
+    [_pdfView.document writeContentToURL:url];
+}
+
+- (void)deleteTextModel:(CPDFWatermark *)waterMark {
+    [self.pdfDocument removeWatermark:waterMark];
+    NSURL *url = [NSURL fileURLWithPath:_path];
+    [_pdfView.document writeToURL:url];
+    
+    _pdfDocument = [[CPDFDocument alloc] initWithURL:url];
+    _pdfView = [[CPDFView alloc] initWithFrame:self.view.bounds];
+    _pdfView.document = _pdfDocument;
+    _pdfView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
+    [self.view addSubview:_pdfView];
 }
 
 @end

+ 2 - 0
PDFViewer/Model/CPDFDataModel.h

@@ -23,6 +23,8 @@ NS_ASSUME_NONNULL_BEGIN
 @property (nonatomic,assign) CGFloat ty;
 @property (nonatomic,assign) CGFloat watermarkRotation;
 @property (nonatomic,strong) UIImage *image;
+@property (nonatomic,assign) CGFloat verticalSpacing;
+@property (nonatomic,assign) CGFloat horizontalSpacing;
 
 @property (nonatomic,copy) NSString *imagePath;
 

+ 6 - 6
PDFViewer/View/CPDFDrawView.m

@@ -49,8 +49,8 @@
     NSInteger wx,wy,height,width;
     wx = self.waterLabelRect.origin.x + self.documentViewRect.origin.x;
     wy = self.waterLabelRect.origin.y + self.documentViewRect.origin.y;
-    height = self.waterLabelRect.size.height + _vertical / 10;
-    width = self.waterLabelRect.size.width + _horizontal / 10;
+    height = self.waterLabelRect.size.height + _vertical / 4;
+    width = self.waterLabelRect.size.width + _horizontal / 4;
 
     NSInteger x,y,a,b;
     x = self.frame.size.width / width;
@@ -65,7 +65,7 @@
 
     for (NSInteger i = 0; i < x; i++) {
         for (NSInteger j = 0; j < y; j++) {
-            [self.dataModel.text drawInRect:CGRectMake(a + i * width, b + j * height, width - _horizontal / 10, height - _vertical / 10) withAttributes:dic];
+            [self.dataModel.text drawInRect:CGRectMake(a + i * width, b + j * height, width - _horizontal / 4, height - _vertical / 4) withAttributes:dic];
         }
     }
 }
@@ -78,8 +78,8 @@
     NSInteger wx,wy,height,width;
     wx = self.waterLabelRect.origin.x + self.documentViewRect.origin.x;
     wy = self.waterLabelRect.origin.y + self.documentViewRect.origin.y;
-    height = self.waterLabelRect.size.height + _vertical / 10;
-    width = self.waterLabelRect.size.width + _horizontal / 10;
+    height = self.waterLabelRect.size.height + _vertical / 1.8;
+    width = self.waterLabelRect.size.width + _horizontal / 1.8;
 
     NSInteger x,y,a,b;
     x = self.frame.size.width / width;
@@ -94,7 +94,7 @@
 
     for (NSInteger i = 0; i < x; i++) {
         for (NSInteger j = 0; j < y; j++) {
-            [self.dataModel.image drawInRect:CGRectMake(a + i * width, b + j * height, width - _horizontal / 10, height - _vertical / 10)];
+            [self.dataModel.image drawInRect:CGRectMake(a + i * width, b + j * height, width - _horizontal / 1.8, height - _vertical / 1.8)];
         }
     }
 }

+ 5 - 0
PDFViewer/View/CPDFEditView.m

@@ -14,9 +14,14 @@
     
     if (self) {
         _editTableView = [[UITableView alloc] initWithFrame:self.bounds style:UITableViewStylePlain];
+        _editTableView.backgroundColor = [UIColor systemGray6Color];
         _editTableView.rowHeight = 50;
         _editTableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
         _editTableView.tableFooterView = [[UIView alloc] init];
+        [_editTableView setEditing:YES animated:YES];
+        _editTableView.allowsMultipleSelection = NO;
+        _editTableView.allowsSelectionDuringEditing = NO;
+        _editTableView.allowsMultipleSelectionDuringEditing = NO;
         
         [self addSubview:_editTableView];
         

+ 4 - 6
PDFViewer/View/CPDFImagePreview.m

@@ -36,12 +36,10 @@ BOOL gImagePreviewIsFirstLayout = YES;
     [_watermarkView sizeToFit];
     _watermarkView.contentMode = UIViewContentModeScaleAspectFit;
     
-    if (gImagePreviewIsFirstLayout) {
-        CGRect frame = _watermarkView.frame;
-        frame.origin = CGPointMake(_documentView.bounds.size.width / 2 - _watermarkView.frame.size.width / 2, _documentView.bounds.size.height / 2 - _watermarkView.frame.size.height / 2);
-        _watermarkFrame = frame;
-        gImagePreviewIsFirstLayout = NO;
-    }
+    CGRect frame = _watermarkView.frame;
+    frame.origin = CGPointMake(_documentView.bounds.size.width / 2 - _watermarkView.frame.size.width / 2, _documentView.bounds.size.height / 2 - _watermarkView.frame.size.height / 2);
+    _watermarkFrame = frame;
+    
     _watermarkView.frame = _watermarkFrame;
     
     [_rotationBtn mas_makeConstraints:^(MASConstraintMaker *make) {

+ 13 - 6
PDFViewer/View/CPDFTextPreview.m

@@ -37,12 +37,19 @@ BOOL gTextPreviewIsFirstLayout = YES;
     _watermarkLabel.layer.borderColor = UIColor.blueColor.CGColor;
 
     [_watermarkLabel sizeToFit];
-    if (gTextPreviewIsFirstLayout) {
-        CGRect frame = _watermarkLabel.frame;
-        frame.origin = CGPointMake(_documentView.bounds.size.width / 2 - _watermarkLabel.frame.size.width / 2, _documentView.bounds.size.height / 2 - _watermarkLabel.frame.size.height / 2);
-            _watermarkLabel.frame = frame;
-        gTextPreviewIsFirstLayout = NO;
-    }
+    
+    /*
+     this have a core was delete:
+         if (gTextPreviewIsFirstLayout) {
+             gTextPreviewIsFirstLayout = NO;
+         }
+     
+     */
+
+    CGRect frame = _watermarkLabel.frame;
+    frame.origin = CGPointMake(_documentView.bounds.size.width / 2 - _watermarkLabel.frame.size.width / 2, _documentView.bounds.size.height / 2 - _watermarkLabel.frame.size.height / 2);
+        _watermarkLabel.frame = frame;
+
     _rotationBtn.layer.cornerRadius = 10;
     _rotationBtn.layer.masksToBounds = YES;
     _rotationBtn.layer.borderColor = UIColor.blueColor.CGColor;