将单个Confluence页面导出为PDF(Python)

时间:2017-09-12 10:44:18

标签: python confluence confluence-rest-api xmlrpclib

我有一个python脚本试图将汇合页面导出为pdf并尝试了几种方法失败:

1.WGET:

wget --ask-password --user xxxxxxxx -O out.pdf -q http://confluence.xxxx.com/spaces/flyingpdf/pdfpageexport.action?pageId=xxxxxxxx

这不会起作用,因为它只返回一个登录对话框而不是实际的pdf。

2.REMOTE API:

使用:https://developer.atlassian.com/confdev/deprecated-apis/confluence-xml-rpc-and-soap-apis/remote-confluence-methods#RemoteConfluenceMethods-Pages

有一个exportSpace方法可以工作,但我只想要一个页面,getPage方法并没有导出到pdf据我所知。此外,这在技术上已被弃用,因此Atlassian推荐:

3.REST API

使用:https://docs.atlassian.com/atlassian-confluence/REST/latest-server/

这似乎没有选项将页面导出为PDF

我希望得到一个可以使这些方法起作用的答案,或者如果你有一个完全不同的方法,只要我能从python脚本中获取页面的PDF,我就不在乎。

4 个答案:

答案 0 :(得分:0)

您可以将脚本与Confluence Bob Swift CLI插件集成。此插件支持各种类型的导出。

步骤1:在前端和后端的两个位置安装插件。

步骤2:通过此命令验证安装 -

/location-of-plugin-installation-directory/.confluence.sh --action getServerInfo

步骤3:使用以下命令导出空间

/location-of-plugin-installation-directory/.confluence.sh --action exportSpace  --space "zconfluencecli"  --file "target/output/export/exportSpacepdf.txt"  --exportType "PDF"

has written

答案 1 :(得分:0)

#This worked for me
#pip install atlassian-python-api
from atlassian import Confluence

#This creates connection object where you provide your confluence URL  and credentials.
confluence = Confluence(
    url='https://confluence.xxxxx.com/',
    username='xxxxxxx',
    password='yyyyyyy')

# If you know page_id of the page, you can get page id by going to "Page Information" menu tab and the page id will be visible in browser as viewinfo.action?pageId=244444444444. This will return a response having key:value pairs having page details.
page = confluence.get_page_by_id(page_id=<some_id>)
your_fname = "abc.pdf"
#A function to create pdf from byte-stream responce
def save_file(content):
    file_pdf = open(your_fname, 'wb')
    file_pdf.write(content)
    file_pdf.close()
    print("Completed")

#Get your confluence page as byte-stream
response = confluence.get_page_as_pdf(page['id'])
#Call function that will create pdf and save file using byte-stream response you received above.
save_file(content=response)

答案 2 :(得分:0)

基于Michael Pillai的答案,我想修改一下,对于Confluence Cloud,您必须添加api_version='cloud'关键字:

confluence = Confluence(
    url='https://confluence.xxxxx.com/',
    username='xxxxxxx',
    password='yyyyyyy',
    api_version='cloud'  # <<< important for the pdf export <<<<
)
content = confluence.get_page_as_pdf(page_id)

从官方pdf export example复制。

答案 3 :(得分:0)

最新的文档使用 confluence.export_page(page_id) 对于仍在寻找此信息的任何人。