Skip to content

创建、移动、删除文本、图像和路径

ComPDFKit 提供了完整丰富的创建、移动、删除文本、图像和路径的方法。

通过CPDFView操作

CPDFView默认提供基本的交互能力,允许用户创建和删除文本、图像和路径,拖拽移动图片和文字块位置,调整图片、文字块和路径大小等,实现类似在常见文字处理软件中的操作。

设置上下文菜单

如果需要复制、粘贴、剪切或删除文本或图片,可以通过CPDFViewmenuItemsEditingAtPoint事件在上下文菜单中添加这些操作方法。

以下是如何在上下文菜单中添加复制、粘贴、删除等操作的示例代码:

swift
override func menuItemsEditing(at point: CGPoint, forPage page: CPDFPage) -> [UIMenuItem] {
      var menuItems = super.menuItemsEditing(at: point, forPage: page)

      self.menuPoint = point
      self.menuPage = page

      if editStatus == CEditingSelectStateEmpty {
          let addTextItem = UIMenuItem(title: NSLocalizedString("Add Text", comment: ""),
                                       action: #selector(addTextEditingItemAction(_:)))
          let addImageItem = UIMenuItem(title: NSLocalizedString("Add Image", comment: ""),
                                        action: #selector(addImageEditingItemAction(_:)))

          menuItems.append(addImageItem)
          menuItems.append(addTextItem)
      }

      return menuItems
  }
objective-c
- (NSArray<UIMenuItem *> *)menuItemsEditingAtPoint:(CGPoint)point forPage:(CPDFPage *)page {
    NSArray * items = [super menuItemsEditingAtPoint:point forPage:page];
    NSMutableArray *menuItems = [NSMutableArray array];
    if (items)
        [menuItems addObjectsFromArray:items];
    
    self.menuPoint = point;
    self.menuPage = page;
    
    if(CEditingSelectStateEmpty == self.editStatus) {
        UIMenuItem *addTextItem = [[UIMenuItem alloc] initWithTitle:NSLocalizedString(@"Add Text", nil)
                                                              action:@selector(addTextEditingItemAction:)];
        UIMenuItem *addImageItem = [[UIMenuItem alloc] initWithTitle:NSLocalizedString(@"Add Image", nil)
                                                               action:@selector(addImageEditingItemAction:)];
        [menuItems addObject:addImageItem];
        [menuItems addObject:addTextItem];
        
    }
    
    return menuItems;
}

插入文字和图片

您可以通过CPDFViewchangeEditingLoadTypesetShouAddEditAreaType方法来指定是否可以插入文字和图片块。下面的代码将向您展示如何执行此操作:

swift
// 插入图片。
pdfView.changeEditingLoadType(.image)
pdfView.setShouAddEdit(.image)
// 插入文字。
pdfView.changeEditingLoadType(.text)
pdfView.setShouAddEdit(.text)
// 取消插入内容状态
pdfView.changeEditingLoadType([.image, .text])
pdfView.setShouAddEdit([])
objective-c
// 插入图片。
[pdfView changeEditingLoadType:CEditingLoadTypeImage];
[pdfView setShouAddEditAreaType:CAddEditingAreaTypeImage];
// 插入文字。
 [pdfView changeEditingLoadType:CEditingLoadTypeText];
[pdfView setShouAddEditAreaType:CAddEditingAreaTypeText];
// 取消插入内容状态
[pdfView changeEditingLoadType:CEditingLoadTypeText | CEditingLoadTypeImage];
[pdfView setShouAddEditAreaType:CAddEditingAreaTypeNone];