如何将Word文档放在网上,以便通过网页下载、打印和阅读?

时间:2016-10-07 作者:John T

我有很多Word文档,它们构成了工作培训材料。我想开发一个网站作为这些文档的存储库。然而,我希望(如果可能的话)访问者能够通过网站查看文档并从那里打印出来(或者如果他们愿意的话,选择下载实际的Word文档),而不仅仅是将它们存储在web服务器上并提供指向文件的链接。

我知道您可以将Word文档“保存”为。html页面,然后我可以将它们全部上传,但我真的希望能有一些不那么笨重的东西。还可以使用自定义页眉/页脚将Word文档嵌入到我的网页中,使它们看起来像网站上的普通页面,并与其他所有内容相匹配。

这可能吗?

谢谢

2 个回复
最合适的回答,由SO网友:fuxia 整理而成

这里真正的问题是下载服务。让我们先将这两项任务分开,以便更好地了解这一点。

上载1…通过Word Direct,Word可以根据直接与WordPress通信xmlrpc.php. 打开新文件时,选择Blog post 作为模板,然后输入一次用户凭据。Word将记住这些。使用一个单独的帐户可能会很有用,以防MS也给家里打电话。

现在,您可以将Word文本直接发布到WordPress。您还可以稍后编辑它们,甚至可以导入现有的博客帖子进行进一步编辑。请记住,Word会将自己的样式直接嵌入HTML代码中。这太难看了。

有一个post on WPMU Dev about the details.

2…作为PDF,有许多Windows驱动程序允许您以PDF格式打印文档。要么找到一个具有开发人员API和事件处理的脚本,以便将上载处理程序附加到打印操作,要么编写一个自定义shell脚本,监视硬盘上的一个目录,并在文件发生更改或替换时上载该文件。

这里棘手的部分是,您不能将PDF发布为博客文章,您必须将该文件添加到媒体库中。后者也可以通过XML RPC完成。

下载

如果文本存储为HTML,如第一个选项中所示,则必须再次将HTML转换回Word。这方面有很多工具。你可以试试PHPWord.

实际的WordPress处理程序可以侦听中的操作wp-admin/admin-post.php 如导出数据中所述CSV in back end with proper HTTP headers:

if ( is_admin() )
{
    $action = \'print_doc\';
    add_action( "admin_post_nopriv_{$action}", \'print_word\' );
    add_action( "admin_post_{$action}", \'print_word\' );
}

function print_word()
{
    $post_id = filter_input( INPUT_GET, \'id\', FILTER_VALIDATE_INT );

    if ( ! $post_id )
        return;

    $post = get_post( $post_id );

    status_header( 200 );
    header(\'Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document\');
    header(\'Content-Disposition: attachment; filename=\' . $post->post_name . \'.docx\');
    header(\'Pragma: no-cache\');

    // Convert $post->post_content to Word
    // Output the Word document
    exit;
}
要在前端创建链接,可以过滤the_content:

if ( ! is_admin() )
{
    add_filter( \'the_content\', function( $content ) {

        if ( ! is_singular() )
            return $content;

        $post_id = get_the_ID();
        $url = admin_url( \'admin-post.php\' );

        $link = sprintf(
            \'<p class="download-link"><a href="%s">Download</a></p>\',
            admin_url( \'admin-post.php\' ) . \'?action=print_doc&amp;id=\' . $post_id
        );

        return $content . $link;
    });
}
如果已将文件上载为PDF,请使用get_attached_media() 这里,过滤PDF的返回值。并以与上面相同的方式创建链接。

SO网友:isaacsgraphic

如果您不需要用户能够编辑word文档,那么将其另存为可能是一个不错的选择。pdf文件。有几个插件可以将pdf嵌入到页面中,大多数浏览器都可以通过pdf链接直接查看和打印。