如何在页眉中添加图像并使首页页眉和页脚与其他页面不同
问题描述
感谢Tanaike's solution,我能够在文档中添加页眉和页脚。唯一的问题是我希望将第一页的页眉和页脚与其他页面保持不同。
我还希望在页眉中添加多个小图像,但在页眉中使用insertInlineImage
添加图像会引发错误。
我的工作代码:
file_id = ##
def insert_data(file_id):
requests = []
header_footer_req = []
index = 0
header_footer_req.append(add_header(index))
header_footer_req.append(add_footer())
header_footer_res = docs.documents().batchUpdate(documentId=file_id, body={'requests': header_footer_req}).execute()
header_id = header_footer_res['replies'][0]['createHeader']['headerId']
footer_id = header_footer_res['replies'][1]['createFooter']['footerId']
requests.append(add_header_content(index, header_id))
requests.append(add_footer_content(footer_id))
docs.documents().batchUpdate(documentId=file_id, body={'requests': requests}).execute()
def add_header(index):
header = {
"createHeader": {
"sectionBreakLocation": {
"index": index
},
"type": "DEFAULT"
}
}
return header
def add_header_content(index, headerId):
headerText = {
"insertText": {
"location": {
"segmentId": headerId,
"index": index,
},
"text": "sample text"
}
}
return headerText
def add_footer():
footer = {
"createFooter": {
"type": "DEFAULT"
}
}
return footer
def add_footer_content(footer_id):
footer_data = {
"insertText": {
"location": {
"segmentId": footer_id,
"index": 0
},
"text": "This is my footer"
}
}
return footer_data
预期样本输出: 第1页:
休息其他页面:
请注意,这两个页面的页脚是不同的,它们右对齐并且是彩色的。它的左侧还有页码。解决方案
我相信您的目标如下。
- 您要创建Google文档的页眉和页脚。
- 从
I'll keep the header and footer in my document same for all the pages.
开始,您希望对第一页和其他页使用相同的页眉和页脚。
- 从
- 对于页眉,您希望在右侧插入图像。
- 对于页脚,您希望在右侧插入2个文本。
- 您希望使用用于Python的Googleapis来实现此目的。
在这种情况下,以下修改后的脚本如何?
修改后的脚本:
在本次修改中,请将insert_data
的函数修改如下。
def insert_data(file_id):
requests = []
header_footer_req = []
index = 0
header_footer_req.append(add_header(index))
header_footer_req.append(add_footer())
header_footer_res = docs.documents().batchUpdate(documentId=file_id, body={'requests': header_footer_req}).execute()
header_id = header_footer_res['replies'][0]['createHeader']['headerId']
footer_id = header_footer_res['replies'][1]['createFooter']['footerId']
# Add header content
requests += [
{
"insertInlineImage": {
"location": {
"segmentId": header_id,
"index": 0
},
"uri": "https://stackoverflow.design/assets/img/logos/so/logo-stackoverflow.png", # This is a sample image.
"objectSize": {
"width": {
"magnitude": 100,
"unit": "PT"
}
}
}
},
{
"updateParagraphStyle": {
"paragraphStyle": {
"alignment": "END"
},
"range": {
"segmentId": header_id,
"startIndex": 0,
"endIndex": 1
},
"fields": "alignment"
}
}
]
# Add footer content.
text = "This is my footer
sample text"
requests += [
{
"insertText": {
"location": {
"segmentId": footer_id,
"index": 0
},
"text": text
}
},
{
"updateParagraphStyle": {
"paragraphStyle": {
"alignment": "END"
},
"range": {
"segmentId": footer_id,
"startIndex": 0,
"endIndex": len(text)
},
"fields": "alignment"
}
}
]
docs.documents().batchUpdate(documentId=file_id, body={'requests': requests}).execute()
- 如果要将内容左侧对齐,请将
END
修改为START
。
注意:
- 在此示例脚本中,当页眉和页脚已经创建后,会出现类似
Default header already exists.
的错误。因为页眉和页脚不能添加到有页眉和页脚的文档中。请注意此点。
引用:
- InsertInlineImageRequest
- InsertTextRequest
相关文章