【问题标题】:Build a PDF from a template in Ruby on Rails在 Ruby on Rails 中从模板构建 PDF
【发布时间】:2011-10-26 22:01:51
【问题描述】:

我想在doc、pdf、odt、docx中创建一个模板……文档类型无所谓。 我想要的是得到这个文档,更改一些值并将这个文档转换为PDF。

例如:

拿这个模板:

<Title>
<Date>

Hello <Name>,

<Text>

         <Farewell>

有了这些信息:

Title: attention
Date: 22/05/2011
Name: NicosKaralis
Text: Lorem ipsum ...
Farewell: See you later

使用颜色、背景和可能具有模板的任何内容生成此 pdf 文档:

attention
22/05/2011

Hello NicosKaralis,

Lorem ipsum ....

         See you later.

在 Ruby on Rails 中有什么方法可以做到这一点? 最好用大虾

提前致谢

-- 编辑--

1 应用程序的所有者将创建如下内容:Original.(odt, doc, pdf)

2 我的应用数据库将有一个具有以下属性的用户:

title = 欢迎来到互联网!

name = Jhon Doe

text = 欢迎来到互联网,我会是你的向导

告别 = 希望很快见到你!

3 我的应用将创建一个像这样的 pdf:Final.pdf 并通过电子邮件发送

我已经在工作的电子邮件部分。我只是没有pdf。

P.S.:我现在如何从头开始创建 pdf,但我不想那样做。 这个应用程序的重点是你不需要成为一个rails 开发人员更改生成的 pdf。

【问题讨论】:

    标签: ruby-on-rails-3 pdf pdf-generation prawn prawnto


    【解决方案1】:

    Ryan Bates here 有一个非常好的截屏视频,用 PDF::Writer 解释了这个技巧。我想这就是你想要的:)

    【讨论】:

    • 我看过这个截屏视频,但不符合我的需要
    • 您将制作文档并将其另存为文档(doc、odt、pdf,无所谓)。会寄给我的。我将放入我的 Rails 应用程序。我的 Rails 应用程序将使用文档作为模板创建 PDF。使用 my rails 应用程序的用户信息将创建一个 PDF 并通过电子邮件发送给用户。我不知道如何更精确。 - 客户端生成pdf。 - Rails 应用程序文档在客户端填写用户信息并生成 pdf。我只需要它,使用已经存在的文档,然后构建一个新的,我可以更改一些信息。
    【解决方案2】:

    我不熟悉对虾,但我对虾很熟悉。自 0.10.1 版以来,他们已经能够导入另一个 pdf 以用作“模板”本身。如果您查看new manual,则有一个关于模板的部分。如果您查看标题为 templates/page_template.rb 的页面,您会看到一些示例代码。它需要一些文本并手动定位它,但可能有一种方法可以进行某种实际替换。

    【讨论】:

    • 再想一想,您可以创建一个与背景颜色相同的 Prawn::Text::Box,然后将其放在模板标签上。然后将替换的文本放在该框的顶部。我不相信真的有一个简单的方法可以做到这一点。
    • 嗯...这本手册解释了一些关于模板的内容,但我真正想要的是更改 PDF 而不必修改代码。而且我认为文本框不会从模板加载格式。还是谢谢
    • 是的,据我所知,没有好的/简单的方法可以做到这一点。如果您有几个许可证,那么有一个商业图书馆 PrinceXML 显然可以将带有 CSS 的 XML/HTML 转换为 PDF。这可能是最简单的方法,但价格昂贵。如果您的客户可以创建实际的 PDF 模板,您可以检查一下,forums.adobe.com/thread/740262
    • 这无济于事......这个应用程序的最终用户现在不需要任何 xml/html/css。我找到了一种方法来更改 .odt 文件中的 xml,但我仍在查看它。
    • 不是特别熟悉 .odt 和 .doc 格式我不能肯定地说,但可能有一个 gem(或处理它们的程序的本机函数)可以转换它们使用 css 转换为 html/xml。从那里您可以很容易地进行文本替换,然后将其传递给 PrinceXML。但同样,大约 4000 美元的服务器许可证可能是这里的真正障碍。
    【解决方案3】:

    This 可以解决问题的前半部分。然后使用wicked_pdf之类的东西来生成。

    【讨论】:

      猜你喜欢
      • 2015-09-19
      • 1970-01-01
      • 2012-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-26
      • 1970-01-01
      相关资源
      最近更新 更多