我一直是 MediaWiki 和类似的基于 wiki 的文本编辑器的忠实粉丝。我喜欢快速添加文本、协作和共享的功能。然而,仍然需要格式良好的打印输出。像页眉和页脚(表达我想要它们表达的内容)、分页符、页边距等。

我见过的大多数解决方案都涉及到某种中间打印媒体格式的转换(可能是 MediaWiki 到 Microsoft Word,或者可能是一些从网页内容生成 PDF 的自定义脚本(带有大量硬编码引用) 。

对于这个问题是否有更通用的解决方案?是否有任何框架能够将 HTML 和 Web 内容合并为打印媒体输出格式?

欢迎任何解决方案、有关利弊的讨论或其他任何内容。

谢谢!

更新: 我认为 CSS 只能让我到目前为止......我使用 CSS 进行类似类型的输出(MediaWiki 默认情况下有一种打印格式,隐藏了大部分导航栏内容)。想想一篇 MediaWiki 文章——想象一下我能够调整内容中的标签或类似的内容,现在我的边距是 1 英寸而不是 0.5 英寸。这更符合我的目标。

有帮助吗?

解决方案

您可能听说过 百科出版社, ,一家与维基媒体基金会进行“维基打印”(即 PDF,但也包括 ODF)交易的公司。(看 “维基可打印”.) 他们的代码被设计为与 MediaWiki 一起使用,并且是 开源.

但!甚至比那更好。看看这个 小书签. 。您可以使用它来创建任何可公开访问的 MediaWiki 页面的 PDF 或 ODF(也许它也需要启用 API...)。您可以将单个 MediaWiki 或多个 MediaWiki 中的多个页面捆绑到单个文档中。在我的书中,这真是太棒了。:)

预计到达时间:PediaPress 投入了大量精力来制作看起来像的东西 真的 很高兴阅读。它不仅仅是将 MediaWiki 的可打印版本转换为 PDF 的等价物。

其他提示

http://www.princexml.com/

可能是东西给你。它XML和HTML页面转换成PDF文档。

使用打印CSS文件是一个非常漂亮的方法来重新格式化页打印。

很多人都回落到PDF,因为它的可以的更强大,更容易。

对于大多数的事情,不过,我认为CSS标记是简单和容易。

看源在StackOverflow的页面,你会看到引用media="print"(print.css) - 一组样式仅仅当一个浏览器打印的页面

<link href="/Content/print.css" rel="stylesheet" media="print" type="text/css" />

可以使用这些隐藏导航栏,广告(或显示不同的广告)。做一些基本的分页等

如果您想设置类似的利润更多的控制,你必须在浏览器之外去(PDF,Word中,XPS等)。

我写了一个 MediaWiki 到 LaTeX 转换器 试图保持源文本的文档结构。然后使用 pdflatex 对该文档进行排版,以生成非常高质量的分页文档。数学标记直接由 LaTeX 渲染,因此方程看起来很棒。LaTeX 文档类/样式表可通过 wiki 中的专用命令进行配置,以直接控制边距、页面布局、字体、额外包等。这属于第二类自定义脚本而不是通用框架。

还有很多其他的,比如 扩展名:Pdf_Export 使用 html文档. 。虽然它更通用,但它的分页工作非常糟糕,并产生了大量的寡妇和孤儿,没有进行最佳的文本调整,也没有做索引、图表、自我引用等。此外,如果您在 MediaWiki 中使用 <math> 标记,它仅包含低分辨率 PNG 文件。

王子XML 专门用于 MediaWiki 并生成美观的文档,但不能在免费许可证下使用。由于它是闭源产品,因此您控制输出的能力受到限制。

一般来说,使用CSS打印样式+一些网页转PDF工具(无头铬, 电子, wkhtml转pdf, XML王子, ,或者只是您的网络浏览器的打印到 PDF 功能(如果您不需要自动化)。

特别是对于 MediaWiki, ElectronPdf服务扩展 为你做这个。(此外,打印样式是 被重写 现在;一两个月后回来查看改进的演示。)

<style type="text/css">
    @media print {
        /***css rules for print mode ***/
        aside#sidebar, header[role="banner"], footer, #comments, #respond, #header-v1, .breadcrumbs, #footer-v1,.topbar-v1,.header-v1,.fcbtnremove {
            display: none;
        }

        .container.content-xs {
            width: 98%;
            margin: 0px;
            padding: 0px;
        }
    }

    @media screen {
        /***css rules for screen , it is sometiems opposite of print mode ***/
        #header-v1, .breadcrumbs, #footer-v1,.topbar-v1,.header-v1 {
            display: block;
        }
    }

    table td , table th{text-align:center;vertical-align:middle}
</style>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top