rob*_*oft 2 html css delphi internet-explorer pdf-generation
我有一个显示第三方生成的HTML页面的小程序.它实际上只是一个锁定的TWebBrowser组件的包装器(我相信它只是一个IE包装器).
客户端现在也想打印这些页面 - 但TWebBrowser打印方法不会渲染所有CSS.例如,客户端使用背景颜色块时,我只获得背景颜色.当你让IE打印页面并且某些CSS类型的格式消失时,你可以在某些网站上看到这个.
我最初说服自己(愚蠢地)说问题是因为CSS是一个外部引用,但是在我将CSS内部放到.HTML文件之后问题仍然存在.
是否有可用于获取包含此CSS格式的打印输出的组件或技术?我想知道试图将浏览器页面首先变成PDF(这对我来说也会有其他优点),但我也没有看到任何明显的方法.
我想我真的在说 - 来自IE的打印输出糟透了,有没有办法更好地近似你在屏幕上看到的内容?:-)
编辑:好的,现在就移动它.我可以说服打印输出包含CSS颜色元素,感谢Will和Onnodb的建议 - 我的样本页面打印好了,并且鉴于用户理解注册表设置方法的重要性,他很高兴用这种方式(它是将在一个锁定的公司型办公室中使用最多六个桌面).
我现在的问题(可能本身就是一个新的S/O帖子)是他们的HTML/CSS中有一些东西正在杀死IE.Firefox非常乐意将它全部打印出来(Safari也是如此),但IE 7和8都会显示页面的打印预览,但在"真正的"打印过程中会死掉.
鉴于用某种TGeckoBrowser(!)替换TWebBrowser可能比它的价值更麻烦(并且可能不会与客户端一起飞行),我将不得不试图找出(令人讨厌的,错综复杂的)格式化代码的位置.造成这个问题.那里有很多DIV,有相对和绝对位置...... :-)
您是否media="screen,print"在其链接/样式标记中链接样式表?另外,在打印时,您需要记住打印机设置等内容:用户是否希望打印出页面背景颜色?您是否专门定义了字体或用户是否在浏览器属性中设置了自己的首选打印字体?
为了打印目的,编写完全独立的样式表通常是个好主意,因为像Georgia这样的衬线字体更容易在纸上阅读,字体大小可能需要更改.图像可能也希望隐藏或缩小.