قالب بندی متن

این صفحه به شما می گوید که چگونه متن را با استفاده از Google Docs API قالب بندی کنید.

درباره قالب بندی

دو نوع قالب بندی مختلف وجود دارد که می توانید برای محتوای متنی سند خود اعمال کنید:

  • می توانید قالب بندی کاراکترها مانند فونت، رنگ یا زیرخط را تغییر دهید.
  • می توانید قالب بندی پاراگراف مانند تورفتگی یا فاصله بین خطوط را تغییر دهید.

تغییر قالب بندی کاراکترها

قالب بندی کاراکتر، رندر کاراکترهای متنی را در سند شما تعیین می کند.

هر قالب‌بندی که اعمال می‌کنید، قالب‌بندی پیش‌فرض به ارث رسیده از TextStyle پاراگراف اصلی را لغو می‌کند. برعکس، هر کاراکتری که قالب بندی آنها را تنظیم نکرده اید همچنان از سبک های پاراگراف به ارث می رسد.

برای تغییر قالب بندی کاراکتر متن، batchUpdate با UpdateTextStyleRequest استفاده کنید. شما باید یک شی Range ارائه دهید که شامل اطلاعات زیر باشد:

  • یک segmentId که مشخص می کند کدام سرصفحه، پاورقی، پاورقی – یا اگر مشخص نشده باشد، متن – حاوی متن است.
  • startIndex و endIndex که محدوده متن را در قسمتی که باید قالب‌بندی می‌شود، تعریف می‌کنند.
  • یک tabId که مشخص می کند کدام برگه حاوی متن است.

مثال زیر چندین عملیات استایل دهی متن را روی متن موجود در هدر انجام می دهد:

  • فونت کاراکترهای 1 تا 5 را بر روی کج برجسته تنظیم می کند.
  • رنگ کاراکترها را 6 تا 10 روی فونت blue 14 نقطه ای Times New Roman قرار می دهد.
  • کاراکترهای 11-15 را به www.example.com پیوند می دهد.

یک راه ساده برای انجام این کار، ایجاد لیستی از درخواست‌ها و سپس استفاده از یک تماس BatchUpdate است:

جاوا

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();

پایتون

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()

تغییر قالب بندی پاراگراف

Google Docs API به شما امکان می‌دهد قالب‌بندی پاراگراف را به‌روزرسانی کنید، که تعیین می‌کند بلوک‌های متن چگونه در سند شما ارائه شوند، از جمله ویژگی‌هایی مانند تراز و تورفتگی.

هر قالب‌بندی که اعمال می‌کنید، قالب‌بندی پیش‌فرض به ارث رسیده از سبک پاراگراف زیرین را لغو می‌کند. برعکس، هر ویژگی قالب‌بندی که تنظیم نکرده‌اید، همچنان از سبک پاراگراف به ارث می‌رسد. برای اطلاعات بیشتر در مورد سبک پاراگراف و وراثت، ParagraphStyle را ببینید.

مثال زیر قالب بندی زیر را برای یک پاراگراف مشخص می کند:

  • عنوان به عنوان سبک نامگذاری شده است
  • فاصله سفارشی در بالا
  • فاصله سفارشی در زیر
  • حاشیه سمت چپ سفارشی

بقیه ویژگی های قالب بندی پاراگراف همچنان از سبک نامگذاری شده زیرین به ارث می رسد.

جاوا

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();

پایتون

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()