قالب بندی متن

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

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

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

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

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

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

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

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

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

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

  • فونت کاراکترهای ۱ تا ۵ را به صورت پررنگ و ایتالیک تنظیم می‌کند.
  • رنگ کاراکترهای ۶ تا ۱۰ را روی فونت blue Times New Roman با اندازه ۱۴ پوینت تنظیم می‌کند.
  • کاراکترهای ۱۱ تا ۱۵ را به 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()

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

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