代码之家  ›  专栏  ›  技术社区  ›  oglester

如何从web应用程序进行高级打印?

  •  16
  • oglester  · 技术社区  · 16 年前

    我特别想要的功能是在没有用户干预的情况下打印横向或纵向。此外,控制基本样式对于将web应用程序的基本外观转换为打印格式也很重要。

    任何建议(特别是来自经验)都将不胜感激。

    9 回复  |  直到 16 年前
        1
  •  11
  •   Community CDub    7 年前

    就像我 asked about here already 并且发现了一条艰难的道路,你无法在浏览器中获得可靠和准确的打印结果。即使它是一个内部网应用程序,你已经承诺必须只与IE7一起工作,IE8将很快推出,然后Firefox将被允许,你对CSS的所有仔细的微观管理都将是徒劳的(我听起来很痛苦吗?)。

    最具前瞻性的解决方案是咬紧牙关,着手生成PDF。你提到的工具很好。你还应该看看 iText iTextSharp . 一旦你掌握了窍门,做PDF布局并不比HTML和CSS难,你就会知道结果会正确地打印在每个人的电脑、浏览器和打印机上。我目前正在使用iTextSharp(尚未完成,但仍在学习和实验)。

    我也没有找到可靠的方法来控制页面内的打印选项,因此依赖用户从纵向更改为横向,或设置或调整页边距,或关闭打印页眉和页脚,从长远来看都是行不通的——如果用户无法做到,你最终会让他们恼火,给自己带来更多麻烦(或者只是不)按照指示去做。

    “相关问题”侧栏非常有用。我在网页上看到了这些关于控制打印机的问题(两个问题的答案都是:“你不能”):

    Programmatically Selecting Landscape Printing

    Printing to a Specific Printer

        2
  •  4
  •   Dillie-O    16 年前

    您还可以查看设置特定的 CSS stylesheets 用于印刷。这样做的好处是,您可以获取显示给用户的现有网页,稍微更改格式以删除任何花哨的横幅或其他占用墨水类型的图像,然后打印出他们在屏幕上看到的内容。

    有些网站会有一个指向“打印机友好版本”的链接,但是如果用户决定在他们所在的页面上点击CTRL+P,即使在HTML标题中同时引用了显示和打印样式表,也会起作用。

        3
  •  3
  •   Jared Updike    16 年前

    我曾经在C#应用程序中使用过iTextSharp,并且很幸运。这需要一点工作,但如果你有图形的经验,这一切都是有意义的,PDF可以看起来非常好(和打印好)。

    http://itextsharp.sourceforge.net/

        5
  •  1
  •   tvanfosson    16 年前

    我不确定这是否是您想要的,但为什么不将CSS与media=print样式表一起使用呢。设计样式表,使打印表单具有所需的特征。或者,您可以通过下载CSV格式的数据并让用户根据数据构建自己的报告,将数据导出到Excel。

    对于实际的PDF和Excel,我使用了 Aspose.com

        6
  •  1
  •   Community CDub    4 年前

    仅适用于IE:

    http://www.meadroid.com/scriptx/index.asp

    绝对控制那些需要从运行Microsoft Internet Explorer浏览器的客户端和服务器计算机打印html文档的用户。

    ScriptX打印功能的一个基本子集——页眉和;页脚设置、打印方向、页边距的粗略控制和浏览器窗口/框架打印命令——免费提供,并可自由分发。高级打印功能不是免费的。启用ScriptX的文档需要引用有效的发布许可证才能进行高级打印。

        7
  •  1
  •   Electrons_Ahoy    16 年前

    附和别人的说法,你永远不会让浏览器像你想要的那样打印。根据经验,印刷媒体类型为CSS 就像它可以工作一样,但它真的永远无法完成工作——特别是当你需要在多个浏览器中工作时(因为我将IE的多个版本作为不同的浏览器,所以我认为所有网站最终都需要这样做。)

    我认为最好的方法是动态地构建PDF。为您的平台找到一个您喜欢/负担得起的PDF软件包,并使用它运行。相信我,你会很高兴你这么做的。

        8
  •  0
  •   djdrey909 djdrey909    16 年前

    这取决于您预期的客户群是已知的还是未知的。如果你想让“任何人”生成可打印的文档,那么我同意其他人的看法,PDF是一个很好的选择。

    PDFLib 轻松创建有吸引力的PDF文档。使用服务器端模块,您可以让设计师在InDesign或Illustrator中创建文档,然后通过编程将动态字段放入顶部(甚至使用Acrobat放置字段)

    对于报表和动态行数据来说,这有点棘手,但可以做到。

    对于实际打印——如果在用户基类已知时创建应用程序(例如Office环境),您可能会考虑标签打印应用程序。 BarTender

        9
  •  0
  •   oglester    16 年前

    主要是分享我处理这件事的方式,但也提供了另一种选择。。。

    我使用的是导出Excel XML的第三方网格。为了让它适合我,我使用XSLT和一些代码来调整XSLT,以便注入打印设置。我敢肯定,它不如PDF强大,但它是一个相当不错的折衷方案,每个页面不需要太多定制。

    因此,basic中的解决方案是以excelxml格式导出,并为页面方向、缩放以及您可能喜欢的任何其他内容插入标记。您可以从一个基本的Excel工作表开始,保存为XML,进行所需的调整。然后阅读源代码,了解Excel是如何做到这一点的。我找不到任何有用的文档。