我正在开发一个基于用户互动动态渲染SVG图形的网页。一旦完成,我希望用户能够仅打印图形 - 不仅仅打印它们驻留在的网页和SVG以及它,而只是打印SVG。此外,理想情况下,打印版本的绘制方式与屏幕浏览器版本略有不同。对于当前的浏览器和SVG,这种事情是否可行?
在Java中,我可以为我的应用程序绘制例程提供绘图引擎或打印引擎,这简单地处理了同样的问题。但是,我是SVG的新手,我无法确定是否存在类似的机制。
答案 0 :(得分:10)
您可以使用jQuery。假设您在网页中有一个DIV(svgDiv)中的svg,包括一个调用以下内容的打印按钮,其中根svg具有id = mySVG,以获取宽度/高度,或使用svgDiv宽度/高度。这将打印当前在svg窗口中的视图。
//---print button---
var printSVG = function()
{
var popUpAndPrint = function()
{
var container = $('#svgDiv');
var width = parseFloat(mySVG.getAttribute("width"))
var height = parseFloat(mySVG.getAttribute("height"))
var printWindow = window.open('', 'PrintMap',
'width=' + width + ',height=' + height);
printWindow.document.writeln($(container).html());
printWindow.document.close();
printWindow.print();
printWindow.close();
};
setTimeout(popUpAndPrint, 500);
};
答案 1 :(得分:9)
您可以致电window.print从javascript开始打印过程。
您可以使用media queries例如
使打印和可见版本不同@media print { different css for print SVG }
如果您不希望打印页面上的现有内容,请使用媒体查询将其设置为display:none或visibility:hidden。