עיצוב טקסט

בדף הזה מוסבר איך לעצב טקסט באמצעות ממשק ה-API של Google Docs.

מידע על הפורמט

יש שני סוגי עיצוב שאפשר להחיל על תוכן הטקסט במסמך:

  • אפשר לשנות את עיצוב התווים, כמו הגופן, הצבע או הקו התחתון.
  • אפשר לשנות את העיצוב של פסקאות, כגון כניסת פסקה או רווח בין שורות.

שינוי פורמט התווים

פורמט התווים קובע את הרינדור של תווי טקסט במסמך.

כל עיצוב שמחילים מבטל את עיצוב ברירת המחדל שעבר בירושה מה-TextStyle של הפסקה הבסיסית. לעומת זאת, תווים שלא הגדרתם את העיצוב שלהם ימשיכו בירושה מהסגנונות של הפסקה.

כדי לשנות את עיצוב התווים של הטקסט, משתמשים ב-batchUpdate עם UpdateTextStyleRequest. צריך לספק אובייקט Range שכולל את המידע הבא:

  • segmentId שמציין איזו כותרת עליונה, כותרת תחתונה או הערת שוליים, או, אם לא צוין, גוף הטקסט, מכיל את הטקסט.
  • הערכים startIndex ו-endIndex שמגדירים את טווח הטקסט בתוך הקטע שרוצים לעצב.

בדוגמה הבאה מתבצעות מספר פעולות של עיצוב טקסט בטקסט שנמצא בכותרת:

  • הגדרת הגופן של תווים 1-5 לגופן נטוי.
  • הגדרת הצבע של התווים 6-10 לגופן blue של 14 נק' ב-Time לנתונים רומיים חדשים.
  • מתבצעת היפר-קישורים מתווים 11-15 אל www.example.com.

דרך פשוטה לעשות זאת היא ליצור רשימת בקשות ולהשתמש בקריאה אחת של 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))
                .setFields("bold")));

        requests.add(new Request()
                .setUpdateTextStyle(new UpdateTextStyleRequest()
                        .setRange(new Range()
                                .setStartIndex(6)
                                .setEndIndex(10))
                        .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))
                        .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
                },
                'textStyle': {
                    'bold': True,
                    'italic': True
                },
                'fields': 'bold,italic'
            }
        },
        {
            'updateTextStyle': {
                'range': {
                    'startIndex': 6,
                    'endIndex': 10
                },
                '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
                },
                'textStyle': {
                    'link': {
                        'url': 'www.example.com'
                    }
                },
                'fields': 'link'
            }
        }
    ]

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

שינוי עיצוב של פסקאות

ב-Google Docs API אפשר לעדכן את עיצוב הפסקאות, שקובע את האופן שבו גושי טקסט מעובדים במסמך, כולל תכונות כמו יישור וכניסת פסקה.

כל עיצוב שמחילים מבטל את עיצוב ברירת המחדל שעבר בירושה מסגנון הפסקה הבסיסי. לעומת זאת, תכונות עיצוב שלא תגדירו ימשיכו בירושה מסגנון הפסקה. למידע נוסף על סגנונות וירושה של פסקאות, ראו ParagraphStyle.

הדוגמה הבאה מציינת את הפורמט הבא של פסקה:

  • כותרת כסגנון בעל השם
  • ריווח מותאם אישית למעלה
  • ריווח מותאם אישית בהמשך
  • גבול שמאלי מותאם אישית

כל שאר תכונות העיצוב של הפסקה ממשיכות לעבור בירושה מהסגנון הבסיסי עם השם.

Java

        List<Request> requests = new ArrayList<>();
        requests.add(new Request().setUpdateParagraphStyle(new UpdateParagraphStyleRequest()
                .setRange(new Range()
                        .setStartIndex(1)
                        .setEndIndex(10))
                .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))
                .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
                },
                '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
                },
                '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()