עיצוב טקסט

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

מידע על עיצוב

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

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

שינוי עיצוב התווים

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

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

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

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

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

  • הגדרת הגופן של התווים 1-5 לנטוי מודגש.
  • הגדרת הצבע של התווים 6 עד 10 ל-blue גופן Times New Roman בגודל 14pt.
  • היפר-קישורים בתווים 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)
                .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()

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

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

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

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

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

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

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