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

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

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 của tài liệu:

  • Bạn có thể thay đổi định dạng ký tự như phông chữ, màu sắc hoặc gạch dưới.
  • Bạn có thể thay đổi định dạng đoạn văn bản, chẳng hạn như thụt lề hoặc khoảng 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ự có định dạng mà bạn không đặt sẽ tiếp tục kế thừa từ kiểu của đoạn văn bả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:

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

Ví dụ sau thực hiện một số thao tác định kiểu văn bản trên văn bản chứa trong tiêu đề:

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

Một cách đơn giản để thực hiện việc này là tạo 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 văn bản

API Google Tài liệu cho phép bạn cập nhật định dạng đoạn văn, giúp 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 tính năng như căn chỉnh và thụt lề.

Mọi định dạng mà bạn áp dụng sẽ ghi đè định dạng mặc định được kế thừa từ kiểu đoạn văn bả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 và tính kế thừa của đoạn văn, 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 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()