基于appy框架(http://appy framework.org)和openoffice/libreoffice的桌面文档生成(.odt,.pdf,.doc,…)

collective.documentgenerator的Python项目详细描述


collective.documentgenerator

collective.documentgenerator 是一款优雅的产品,可以基于动态模板轻松生成办公文档。

新的内容类型用于存储不同的模板:

  • 样式模板 ,可用于其他模板
  • 子模板 ,可用于其他模板
  • 邮件循环模板 ,可由其他模板用于进行邮件循环
  • 基本模板
  • 高级模板 ,关于配置

模板在libreoffice软件中创建。

输出格式是可以由libreoffice生成的格式:

  • ODT和ODS格式
  • doc、docx、xls、xlsx格式
  • pdf、csv、rtf

您可以使用演示配置文件轻松测试产品。

用法

如何添加新的pod模板?

在plone站点中,您可以添加两种主要模板:

  • podtemplate:由标题、说明和要上传的odt文件组成
  • configurablepodtemplate:向基本模板添加可配置字段
    • 输出格式选择
    • 门户类型选择
    • 样式模板选择
    • 子模板选择
    • 例如condition( 行为 )。
    • 启用标志
    • 上下文变量列表
    • 邮件循环模板

如果需要,可以将模板组织到一个或多个文件夹中。

如何编写模板

appy框架用于解释模板并使用上下文呈现模板。

您可以找到一个说明可以使用的语法的文档。

您可以执行以下操作:

  • 使用基本的python表达式访问上下文字段或方法
  • 做一个如果…那么…否则…
  • 对段落、节、表、行、单元格执行循环
  • 将xhtml转换为文本

可以在模板中使用基本帮助程序方法,也可以添加自定义方法。

如何生成文档?

viewlet根据当前上下文显示所有可用的podtemplate和configurablepodtemplate。 单击模板链接将调用文档生成视图。

  • 调用"文档生成"视图
    • 呈现模板并建议下载生成的文档
    • 参数:模板uid和文档类型
    • 这是defa在viewlet中使用的ult视图
  • 调用"持久文档生成"视图
    • 呈现模板并使用生成的文档创建文件
    • 参数:模板uid和文档类型
  • 调用"邮件循环永久文档生成"视图
    • 循环保存的呈现文档并创建包含所有文档的文件
    • 参数:文档uid

plone版本

它在plone 4.3、plone 5.0和plone 5.1上运行和测试。

贡献者

更改日志

3.8(2019-08-13)

  • 添加了自定义临时目录"custom\u tmp"环境变量 用于Appy的工作区。 [奥德莱尔]
  • 增加了对libreoffice使用外部服务器进程的能力。 [奥德莱尔]
  • 制作文档生成器链接视图。获取链接信息 pod_template object 除了 pod_template uid 之外。 [格巴斯蒂恩]

3.7(2019-05-16)

  • 将参数 helper_view pod_template 传递到 文档生成视图。获取基本生成上下文 如有必要。 [格巴斯蒂恩]
  • 在中显示实现iconfigurablepodtemplate的每个pod模板 集合.documentgenerator.existingpodtemplate 词汇表。 [格巴斯蒂恩]
  • 将文件changes.rst、readme.rst和contributors.rst从docs/移动到根目录。 [格巴斯蒂恩]

3.6(2019-03-27)

  • 按父级中的位置排序的生成链接。 [sgeulette]

3.5(2019-03-08)

  • 使样式不是必需的。 [sgeulette]
  • 添加了collective.fingerpointing支持,以了解谁以何种格式生成了哪个文档 [奥德莱尔]

3.4(2018-12-18)

  • 在pod模板上,当显示使用我的odt_文件的pod模板时, 在标题旁边显示绝对URL。 [格巴斯蒂恩]

3.3(2018-10-02)

  • 如果不允许删除tmp文件,请不要中断,例如 当libreoffice用户与zope实例用户。 [格巴斯蒂恩]
  • 允许重写要合并的模板列表中的门户类型和显示的标题。 [奥德莱尔]
  • 添加生成上下文作为邮件列表的参数 [sgeulette]
  • 避免在mailinglooppersistentdocumentgenerationview中调用邮件列表2次 [sgeulette]
  • 在环境变量后面添加了更新oo配置函数以更新oo选项 [sgeulette]

3.2(2018-07-24)

  • 邮件:在邮件生成上下文中包含来自原始模板的上下文变量。 [sgeulette]
  • PEP8:排序导入 [sgeulette]

3.1(2018-05-03)

  • 在pod模板上,添加了重用另一个 吊舱模板。 [阿努耶斯,奥德莱尔,格巴斯蒂恩]
  • 不要注册 ibelowcontentbody viewlet使用 ibatchactionsmarker 但注册它 对于更具体的接口,请使用ibelowContentBodyBatchActionsMarker。 [格巴斯蒂恩]
  • 重写批处理操作viewlet available方法。 [sgeulette]
  • 添加了列修改器管理(appy中的新增项>;0.9.11) [奥德莱尔]

3.0.12(2018-02-21)

  • 更新渲染器参数:managepagestyles和resolvefields。 [sgeulette]
  • 已从POD模板架构中删除"重命名页面样式"字段。 [sgeulette]

3.0.11(2018-01-17)

  • add hook to提供要更新的所有助手视图 应用渲染器 [sdelcourt]

3.0.10(2018-01-06)

  • 在"查看操作"列中使用"编辑操作目标"。 [sgeulette]
  • 不要使用css来管理contenttype图标, 我们在门户类型上有一个图标。 [格巴斯蒂恩]
  • 使用collective.eeafaceed.batchactions(如果存在)。 添加选择列和批处理转换按钮 [sgeulette]
  • 使用门户类型图标在表视图中显示。 [sgeulette]

3.0.9(2017-12-18)

  • 添加"重命名页面样式"字段并将其用作渲染器参数。 [sgeulette]
  • 添加了plone翻译。 [sgeulette]

3.0.8(2017-12-11)

  • 在基本模板类型上添加了样式模板。 [sgeulette]

3.0.7(2017-12-04)

  • 在模板列表中包含批处理。 [sgeulette]
  • 更正了日期显示中的编码错误 [sgeulette]

3.0.6(2017-11-28)

  • 更正的集合模板 [sgeulette]
  • 修复样式更新中的错误 [sgeulette]

3.0.5(2017-11-16)

  • 已更正操作面板调用。 [sgeulette]
  • 在helper视图中添加了获取二进制文件的方法,它返回 一个文件对象,管理对象是一个灵活或原型文件的事实。 [格巴斯蒂恩]
  • 需要 future>;=0.14.0 才能使用 html 包。 [格巴斯蒂恩]
  • 修复了法语测试(这验证了翻译,尤其是 日期方法)。固定测试在plone 4.3.x和plone 5.x中都有效 [格巴斯蒂恩]
  • 升级了travis上的pip。不要使用引导程序。升级setuptools。 [sgeulette]

3.0.4(2017-11-10)

  • 在日期显示中管理周和月的翻译 [sgeulette]
  • 在列表模板中添加下载列 [sgeulette]

3.0.3(2017-10-30)

  • 添加视图以重置样式修改(因此模板被视为未修改)。 [sgeulette]
  • 添加视图以列出所有模板 [sgeulette]
  • 添加字段 pod_template.optimize_tables 使用全局值/force enable/force disable 吊舱模板 [ GBASTIN < <

3.0.2(2017-10-06)

  • 为ubuntu 16.04修正了soffice脚本。 [sgeulette]
  • 测试现在依赖于imio.helpers在需要时导入测试日志 例如,已登录Travis CI。 [格巴斯蒂恩]
  • 根据3.0.1中的更改更正测试 [sgeulette]
  • 添加显示电话方法 [sgeulette]

3.0.1(2017-09-20)

  • 使用pod模板标题作为持久化文档的默认标题。 [sdelcourt]

3.0.0(2017-09-20)

  • 在类型上添加了锁定行为。 [sgeulette]
  • 在configurablepodtemplate上添加了mailing loop template type和mailling_loop_template字段。 [sgeulette]
  • 添加了"邮件循环永久文档生成"视图来管理邮件循环生成 [sgeulette]
  • 添加了用于管理上下文的帮助器方法 [sgeulette]
  • 添加了helper方法以检查在呈现期间是否必须替换已发送的数据 [sgeulette]
  • 已将文件名生成移动到 documentgenerationview.\u get\u filename 方法,因此 很容易覆盖和调用特定的用例。 [格巴斯蒂恩]
  • 已将永久性文档标题生成移动到 文档生成视图。\u get\u title 方法 因此很容易覆盖和调用特定的用例。 [sgeulette]
  • 如果无法删除临时文件,请不要中断。 [格巴斯蒂恩]

2.0.8(2017-08-02)

  • 为生成视图的"pod_template"和"output_format"属性添加默认值。 [sdelcourt]

2.0.7(2017-07-25)

  • 检查字段名称是否存在以下参数:默认不存在,不存在则失败 [sgeulette]

2.0.6(2017-07-24)

  • 修正了迁移步骤。 [sgeulette]
  • 检查z3c.form.interfaces.no_value in get_value [sgeulette]

2.0.5(2017-07-19)

  • 添加了完成返回的信息的简单方法 文档生成器linksviewlet.获取链接信息 。 [格巴斯蒂恩]
  • 直接在 @"生成"视图 和"文档生成"助手视图上的 self.pod_模板 self.output_格式 。 [格巴斯蒂恩]
  • 添加了用于更改门户类型图标的迁移 [sgeulette]

2.0.4(2017-07-12)

  • 测试期间开始和结束libreoffice。 [sgeulette]
  • 检查行为中的字段名是否存在 [sgeulette]

2.0.3(2017-06-22)

  • 生成文件名时,将特殊字符从unicoded title删除到 避免将其转换为ascii数字(特殊字符 u2013 被转换 在生成的文件名中 2013 。 [格巴斯蒂恩]

2.0.2(2017-06-22)

  • 请确保裁剪的文件名中没有 - 字符,因为 如果遇到 - 则由 cropname 和cut name来处理。 [格巴斯蒂恩]

2.0.1(2017-06-21)

  • 使用 plone.i18n.normalizer.interfaces.ifilenamenormalizer 来规范化 文件名,因为products.cmfplone.utils.normalizestring使用 最大长度固定为50的iidnormalizer。这里最大长度是固定的 到1023,所以我们可以管理很长的元素标题来生成文件名。 [格巴斯蒂恩]
  • 管理样式修改字段以检测模板是否已被用户修改。 更新更新模板方法以使用它。 [sgeulette]

2.0.0(2017-06-21)

  • 使包装与PLONE4和PLONE5同时兼容: -创建了plone版本特定的配置文件(plone4和plone5); -删除了plone5版本中at的支持; -调整了演示配置文件,使其能够灵活地工作(plone.app.contenttypes)。 [格巴斯蒂恩]
  • 用"法语"运行所有测试,这样我们就可以确保翻译在任何地方都能正常工作。 [格巴斯蒂恩]
  • 添加了参数raiseonerror以便非经理能够提出一个plone 生成包含错误的文档时出错。避免这种 生成包含可能丢失某些数据的错误的文档,如 当用户不理解时,错误是不可见的,甚至在odt中也是如此。 评论中的错误很重要。这将启用raiseonerror appy.pod.renderer.renderer的参数。 [格巴斯蒂恩]
  • 创建pod模板时更新调用样式 [sgeulette]
  • 样式更新失败时引发异常 [sgeulette]
  • 已更正演示模板的mimetype。仅更新ODT的样式。 [sgeulette]

1.0.6(2017-05-31)

  • 在imerGetTemplatesRowschema架构中添加了do_rendering字段。如果选中,则首先呈现子模板 路径是context dict中的值,否则subtemplate对象就是context dict中的值。 [sgeulette]
  • 从呈现方法返回生成上下文以在测试中使用它 [sgeulette]
  • 添加了Do_呈现功能的单元测试 [奥德莱尔,斯古莱特]
  • 改进了configurablepodtemplate的验证 [奥德莱尔]
  • 添加验证以避免生成时生成上下文损坏 [奥德莱尔]
  • 管理上下文变量中的布尔值 [sgeulette]
  • 删除了粘贴时导致错误的元类型属性 [sgeulette]
  • 用pod的样式模板更新pod模板时不要丢失文件名 [格巴斯蒂恩]
  • 轻松覆盖 collective.documentgenerator.styletemplates 词汇表的术语标题 [格巴斯蒂恩]
  • 为styletmplate定义正确的portal_类型描述,以便将其显示在文件夹_factories中 [格巴斯蒂恩]
  • 修改生成的文件名,以前是pod模板标题和格式,现在它使用pod模板标题构建, 上下文标题和格式 [格巴斯蒂恩]

1.0.5(2017-03-10)

  • 在display_html_as_text开关中添加的参数"html"与"field_name"互斥,以添加使用日期字段或具有display_html_as_text的html格式字符串的能力。 [奥德莱尔]
  • 在display_text_as_html开关中添加的参数"text"与"field_name"互斥,以添加使用日期字段或具有display_text_as_html的字符串的能力。 [奥德莱尔]
  • 在display_date witch中添加的参数"date"与"field_name"互斥,以添加使用具有display_date的日期字段或日期对象的能力。 [奥德莱尔]
  • 添加参数 优化表 以便能够使用 最佳列宽 appy.pod的功能性。 [格巴斯蒂恩]

1.0.4(2017-02-14)

  • 仅使用force param更新样式模板。 [sgeulette]
  • 确保 current_md5 存储为Unicode,否则在以下情况下无法验证 手动验证存储的数据。 [格巴斯蒂恩]

1.0.3(2017-02-10)

  • 添加了更新模板的utils方法。 [sgeulette]

1.0.2(2017-02-07)

  • 修复字段 iconfigurablepodtemplate.pod_格式的小部件 iconfigurablepodtemplate.pod\u portal\u类型以避免被其他类型覆盖 当使用 collective.z3cform.select2 时,会像这样打包。 为 iconfigurablepodtemplate.pod\u portal\u类型使用checkboxwidget 显示多个元素时的选择。 [格巴斯蒂恩]
  • 对存储在生成上下文中的视图元素设置appy renderer。 在生成上下文getter中重写视图时很有用。 [sgeulette]

1.0.1(2017-01-13)

< UL>
  • 删除了getdghv方法中无用的参数。 [sgeulette]
  • 1.0.0(2017-01-12)

    • 在未实现的方法中引发notimplementederror。 [sgeulette]
    • 重命名display_html by render_xhtml和display_text_as_html。 [sgeulette]
    • 添加显示为文本的HTML [sgeulette]
    • 添加获取状态 [sgeulette]
    • 添加context_var方法以安全地获取可选的上下文变量 [sgeulette]

    0.14(2016-12-19)

    • 对documentgenerator配置的条目使用正确的名称 在控制面板中。 [格巴斯蒂恩]
    • 在演示模板中添加了格式 .doc .docx 测试模板的倍数。 [格巴斯蒂恩]
    • 从环境变量设置oo_port和uno_path的默认值 [sgeulette]

    0.13(2016-12-09)

    • 通过导入而不是导入unohlper来验证python的路径 uno 因为 uno 可以使用 pip install uno安装 但不足以生成文档。 [格巴斯蒂恩]
    • 添加了可以生成模板的 .docx 格式。 [格巴斯蒂恩]
    • 在安装时从环境变量设置oo_port [sgeulette]

    0.12(2016-12-07)

    • 将每个参数传递给documentgenerationhelperview.translate 是zope.i18n.translate管理的。 [格巴斯蒂恩]
    • 使上下文变量值不是必需的 [sgeulette]

    0.11(2016-11-22)

    • 用getmultiadapter替换了unrestrictedtraverse。 [sgeulette]
    • 在configurablepodtemplate和validator上添加了上下文变量字段。 在生成上下文中添加了这些变量。 [sgeulette]
    • 将fr设置从默认配置文件移动到测试 [sgeulette]

    0.10(2016-10-05)

    • 在renderer中使用forceoocall调用libreoffice在odt中呈现b.e.目录 [sgeulette]
    • 已更改Viewlet播客模板搜索。在zcml中定义了模板。 [sgeulette]
    • 添加内容图标 [sgeulette]
    • 正确管理datetime.date和datetime.datetime [sgeulette]
    • 添加显示小部件方法 [sgeulette]
    • 重命名显示文本以显示HTML(对于富文本字段) [sgeulette]
    • 为文本字段添加显示文本以呈现智能HTML [sgeulette]
    • 添加方法以获取属性值 [sgeulette]
    • 添加方法以获取另一个对象上的助手视图 [sgeulette]
    • 从助手方法中移除上下文参数以避免更改上下文 [sgeulette]
    • 从方法获取生成视图名称。 [sgeulette]
    • 为bool字段"enabled"使用radiofieldwidget,以便它显示在 当pod_模板视图为false时。 [格巴斯蒂恩]

    0.9(2016-06-22)

    • 处理单个选择小部件的呈现值的情况。 [sdelcourt]

    0.8(2016-06-03)

    • 在"文档生成"视图中,将"文档呈现"传递为"图像分解器"。 要访问私有图像,请执行以下操作 XHTML字段中的libreoffice。 [格巴斯蒂恩]

    0.7(2016-03-22)

    • **kwargs 传递到documentgenerationview.\u呈现文档以便可以传递 appy.pod.renderer.renderer的任意参数,在渲染文档中调用 我们还将通过 **kwargs 。 这样,就可以将renderer.raiseonerror设置为true。 [格巴斯蒂恩]
    • 为内容类型添加了元类型 podtemplate configurablepodtemplate subtemplate 和样式模板,这样它就可以用来过滤出objectvalues/objectid。 [格巴斯蒂恩]
    • 加了一个瓦利达用于检查所选代 格式会根据提供的文件类型进行更正。 [Boulch,Diekatze]

    0.6(2016-01-21)

    • css修复,使用display:inline块在viewlet中显示pod模板; 而不是display:inline;因此附加的标记可以在上面对齐。 [格巴斯蒂恩]
    • 向要在GenerationLinks Viewlet中显示的可用数据列表添加了"说明"。 当悬停POD模板标题时,此时将显示POD模板描述。 [格巴斯蒂恩]

    0.5(2015-12-02)

    • 添加了configurablepodtemplatecondition.\u extra\u expr\u ctx方法,因此很容易 在不重写的情况下扩展ITalCondition表达式的上下文 评估法。 [格巴斯蒂恩]

    0.4(2015-12-02)

    • 确保不查询 none 以确保与zcatalog 3兼容。 [格巴斯蒂恩]
    • 考虑注册表中定义的参数。 [格巴斯蒂恩]

    0.3(2015-09-30)

    • 扩展"基本助手"视图以执行@@plone,@@plone\u portal\u state视图可用 并添加了一个方法"translate",以便能够在给定域中翻译msgid。 [格巴斯蒂恩]
    • 重构了要使用的documentgenerationhelperview.display\u date方法 ToLocalizedDate并改编了AT和DX实现。 [格巴斯蒂恩]
    • 重构generation视图以传递参数 pod_template output_format 直接指向视图调用或其方法。 [格巴斯蒂恩,斯德尔库尔特]

    0.2(2015-09-22)

    • 将字段重命名为此字段 是一个多选领域。 [格巴斯蒂恩]
    • 文档生成所使用的 文档uid 参数重命名为 模板 链接信息字典。 [格巴斯蒂恩]
    • 添加了字段iconfigurablepodtemplate.pod_formats,以便能够选择 我们要在中生成pod模板的格式。 [格巴斯蒂恩]
    • 评估模板上的Tal_条件时,请传递Extra_Expr_CTX 对于tal表达式,因此 context 在这里成为tal 表达式实际上是求值的,而不是pod_模板和 模板 是pod_模板 [格巴斯蒂恩]

    0.1(2015-07-17)

    • 什么都没变。

    0.1(2015-07-17)

    • 初次发布。 [格巴斯蒂恩]
    • …/LI>
    • 更新引导 使用https://raw.githubusercontent.com/buildout/buildout/master/bootstrap/bootstrap.py" rel="nofollow">https://raw.githubusercontent.com/buildout/buildout/master/bootstrap/bootstrap.py [fngaha]

    欢迎加入QQ群-->: 979659372 Python中文网_新手群

    推荐PyPI第三方库


    热门话题
    java LineNumberReader。如果查询行为不正确,则返回readLine()   java包含了一个使用AndroidX的工具栏,这让我的应用程序崩溃了   JVM设置通过“java jar”运行应用程序的最佳实践   java如何获取ImageButton宽度   java Oracle SQLLDR实用程序无响应   列出Java获取对象的arrayList中最常见的元素   java使用带有FlowLayout的getContentpane对布局应用更改,但不起作用为什么?   在java中,我可以在画布上绘制画布吗?   编译游戏代码时发生java异常错误   从firestore获取java Webview失败   java将TableLayout中单元格的内容向右对齐   java无法在发布模式下启动活动(使用proguard安卓optimize配置)   java允许在线程期间进行GUI更新。睡觉   java如何对以变量为列表的列表进行排序   API URL上的java Google云端点异常