Định dạng văn bản

Trang này hướng dẫn cách định dạng văn bản bằng Google Docs API.

Giới thiệu về định dạng

Có hai loại định dạng mà bạn có thể áp dụng cho nội dung văn bản trong tài liệu:

  • Bạn có thể thay đổi định dạng ký tự, chẳng hạn như phông chữ, màu sắc hoặc dấu gạch dưới.
  • Bạn có thể thay đổi định dạng đoạn văn, chẳng hạn như thụt lề hoặc giãn cách dòng.

Thay đổi định dạng ký tự

Định dạng ký tự xác định cách hiển thị các ký tự văn bản trong tài liệu.

Mọi định dạng mà bạn áp dụng sẽ ghi đè định dạng mặc định được kế thừa từ TextStyle của đoạn văn bản cơ bản. Ngược lại, mọi ký tự mà bạn không đặt định dạng sẽ tiếp tục kế thừa từ kiểu của đoạn văn.

Để thay đổi định dạng ký tự của văn bản, hãy sử dụng batchUpdate với UpdateTextStyleRequest. Bạn cần cung cấp một đối tượng Range bao gồm các thông tin sau:

  • Một segmentId xác định tiêu đề, chân trang, chú thích nào (hoặc nếu không được chỉ định, thì là nội dung) chứa văn bản.
  • startIndexendIndex xác định phạm vi văn bản trong đoạn cần định dạng.
  • Một tabId xác định thẻ chứa văn bản.

Ví dụ sau đây thực hiện một số thao tác tạo kiểu văn bản trên văn bản có trong tiêu đề:

  • Đặt phông chữ của các ký tự từ 1 đến 5 thành kiểu chữ in đậm và in nghiêng.
  • Đặt màu của các ký tự từ 6 đến 10 thành phông chữ Times New Roman 14 pt blue.
  • Siêu liên kết các ký tự từ 11 đến 15 đến www.example.com.

Một cách đơn giản để thực hiện việc này là tạo một danh sách yêu cầu, sau đó sử dụng một lệnh gọi batchUpdate:

Java

List<Request> requests = new ArrayList<>();
requests.add(new Request().setUpdateTextStyle(new UpdateTextStyleRequest()
        .setTextStyle(new TextStyle()
                .setBold(true)
                .setItalic(true))
        .setRange(new Range()
                .setStartIndex(1)
                .setEndIndex(5)
                .setTabId(TAB_ID))
        .setFields("bold")));

requests.add(new Request()
        .setUpdateTextStyle(new UpdateTextStyleRequest()
                .setRange(new Range()
                        .setStartIndex(6)
                        .setEndIndex(10)
                        .setTabId(TAB_ID))
                .setTextStyle(new TextStyle()
                        .setWeightedFontFamily(new WeightedFontFamily()
                                .setFontFamily("Times New Roman"))
                        .setFontSize(new Dimension()
                                .setMagnitude(14.0)
                                .setUnit("PT"))
                        .setForegroundColor(new OptionalColor()
                                .setColor(new Color().setRgbColor(new RgbColor()
                                        .setBlue(1.0F)
                                        .setGreen(0.0F)
                                        .setRed(0.0F)))))
                .setFields("foregroundColor,weightedFontFamily,fontSize")));

requests.add(new Request()
        .setUpdateTextStyle(new UpdateTextStyleRequest()
                .setRange(new Range()
                        .setStartIndex(11)
                        .setEndIndex(15)
                        .setTabId(TAB_ID))
                .setTextStyle(new TextStyle()
                        .setLink(new Link()
                                .setUrl("www.example.com")))
                .setFields("link")));


BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests);
BatchUpdateDocumentResponse response = docsService.documents()
        .batchUpdate(DOCUMENT_ID, body).execute();

Python

requests = [
    {
        'updateTextStyle': {
            'range': {
                'startIndex': 1,
                'endIndex': 5,
                'tabId': TAB_ID
            },
            'textStyle': {
                'bold': True,
                'italic': True
            },
            'fields': 'bold,italic'
        }
    },
    {
        'updateTextStyle': {
            'range': {
                'startIndex': 6,
                'endIndex': 10,
                'tabId': TAB_ID
            },
            'textStyle': {
                'weightedFontFamily': {
                    'fontFamily': 'Times New Roman'
                },
                'fontSize': {
                    'magnitude': 14,
                    'unit': 'PT'
                },
                'foregroundColor': {
                    'color': {
                        'rgbColor': {
                            'blue': 1.0,
                            'green': 0.0,
                            'red': 0.0
                        }
                    }
                }
            },
            'fields': 'foregroundColor,weightedFontFamily,fontSize'
        }
    },
    {
        'updateTextStyle': {
            'range': {
                'startIndex': 11,
                'endIndex': 15,
                'tabId': TAB_ID
            },
            'textStyle': {
                'link': {
                    'url': 'www.example.com'
                }
            },
            'fields': 'link'
        }
    }
]

result = service.documents().batchUpdate(
    documentId=DOCUMENT_ID, body={'requests': requests}).execute()

Thay đổi định dạng đoạn

Google Docs API cho phép bạn cập nhật định dạng đoạn văn. Định dạng này xác định cách hiển thị các khối văn bản trong tài liệu, bao gồm cả các tính năng như căn chỉnh và thụt lề.

Mọi định dạng mà bạn áp dụng đều sẽ ghi đè định dạng mặc định được kế thừa từ kiểu đoạn văn cơ bản. Ngược lại, mọi tính năng định dạng mà bạn không đặt sẽ tiếp tục kế thừa từ kiểu đoạn văn. Để biết thêm về kiểu đoạn văn và tính kế thừa, hãy xem ParagraphStyle.

Ví dụ bên dưới chỉ định định dạng sau cho một đoạn văn:

  • Tiêu đề dưới dạng kiểu được đặt tên
  • Giãn cách tuỳ chỉnh ở trên
  • Giãn cách tuỳ chỉnh bên dưới
  • Đường viền trái tuỳ chỉnh

Tất cả các tính năng định dạng còn lại của đoạn văn sẽ tiếp tục kế thừa từ kiểu có tên cơ bản.

Java

List<Request> requests = new ArrayList<>();
requests.add(new Request().setUpdateParagraphStyle(new UpdateParagraphStyleRequest()
        .setRange(new Range()
                .setStartIndex(1)
                .setEndIndex(10)
                .setTabId(TAB_ID))
        .setParagraphStyle(new ParagraphStyle()
                .setNamedStyleType("HEADING_1")
                .setSpaceAbove(new Dimension()
                        .setMagnitude(10.0)
                        .setUnit("PT"))
                .setSpaceBelow(new Dimension()
                        .setMagnitude(10.0)
                        .setUnit("PT")))
        .setFields("namedStyleType,spaceAbove,spaceBelow")
));

requests.add(new Request().setUpdateParagraphStyle(new UpdateParagraphStyleRequest()
        .setRange(new Range()
                .setStartIndex(10)
                .setEndIndex(20)
                .setTabId(TAB_ID))
        .setParagraphStyle(new ParagraphStyle()
                .setBorderLeft(new ParagraphBorder()
                        .setColor(new OptionalColor()
                                .setColor(new Color()
                                        .setRgbColor(new RgbColor()
                                                .setBlue(1.0F)
                                                .setGreen(0.0F)
                                                .setRed(0.0F)
                                        )
                                )
                        )
                        .setDashStyle("DASH")
                        .setPadding(new Dimension()
                                .setMagnitude(20.0)
                                .setUnit("PT"))
                        .setWidth(new Dimension()
                                .setMagnitude(15.0)
                                .setUnit("PT")
                        )
                )
        )
        .setFields("borderLeft")
));

BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests);
BatchUpdateDocumentResponse response = docsService.documents()
        .batchUpdate(DOCUMENT_ID, body).execute();

Python

requests = [
    {
        'updateParagraphStyle': {
            'range': {
                'startIndex': 1,
                'endIndex':  10,
                'tabId': TAB_ID
            },
            'paragraphStyle': {
                'namedStyleType': 'HEADING_1',
                'spaceAbove': {
                    'magnitude': 10.0,
                    'unit': 'PT'
                },
                'spaceBelow': {
                    'magnitude': 10.0,
                    'unit': 'PT'
                }
            },
            'fields': 'namedStyleType,spaceAbove,spaceBelow'
        }
    },
    {
        'updateParagraphStyle': {
            'range': {
                'startIndex': 10,
                'endIndex':  20,
                'tabId': TAB_ID
            },
            'paragraphStyle': {
                'borderLeft': {
                    'color': {
                        'color': {
                            'rgbColor': {
                                'blue': 1.0,
                                'green': 0.0,
                                'red': 0.0
                            }
                        }
                    },
                    'dashStyle': 'DASH',
                    'padding': {
                        'magnitude': 20.0,
                        'unit': 'PT'
                    },
                    'width': {
                        'magnitude': 15.0,
                        'unit': 'PT'
                    },
                }
            },
            'fields': 'borderLeft'
        }
    }
]

result = service.documents().batchUpdate(
    documentId=DOCUMENT_ID, body={'requests': requests}).execute()