Co powiedział @Bondye.
utworzyć klasę coś podobnego
@media print {
.unprintable {
visibility: hidden;
}
}
i zastosować klasę do SVG elementy nie chcesz drukować
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<circle cx="50" cy="50" r="40" fill="red" />
<circle cx="150" cy="50" r="40" fill="red" />
<circle cx="50" cy="150" r="40" fill="blue" class="unprintable" />
<circle cx="150" cy="150" r="40" fill="red" />
</svg>
I próby drukowania, niebieskie koło będzie niewidoczny .
http://jsfiddle.net/EqDGQ/
Jeśli visibility: hidden;
nie działa dla Ciebie, spróbuj display: none;
również.
EDITED
Jeśli nie można dodać klasę, gdy są one rysowane, użyć JavaScript, aby dodać tę klasę po załadowaniu strony.
Nie można użyć funkcji ukrywania(), ponieważ spowoduje to również usunięcie elementów z ekranu. Musisz otworzyć nową kartę/okno i wywołać funkcję hide(), ale jak wspomniano w pytaniu, użytkownicy mogą używać menu przeglądarki do drukowania. Wtedy nie masz szansy na otwarcie nowej karty/okna i wywołanie hide().
Należy więc dodać klasę .unprintable podczas ładowania strony. Następnie na ekranie wszystko jest pokazane, ale na wydruku nie można drukować elementów.
Jeśli umieścić link do witryny, a powiedz mi, co chcesz ukryć, mogę pomóc napisać kod JS, ale to będzie coś takiego: http://jsfiddle.net/EqDGQ/1/
$(function() {
$('svg circle[fill="blue"]').attr('class', 'unprintable');
});
---- ------------
Edytowany ponownie! :)
Napisałem tę funkcję JS (potrzebne jQuery), która dodaje ".niecenzuralny”class do wszystkich elementów svg wewnątrz prostokątnego obszaru:
setUnprintableArea = function(id, xMin, yMin, xMax, yMax, rightAligned) {
if (rightAligned) {
svgWidth = $('#'+id+' .highcharts-container svg')[0].getBoundingClientRect().width;
xMin += svgWidth;
xMax += svgWidth;
}
$('#'+id+' .highcharts-container svg *').filter(function() {
rect = this.getBoundingClientRect();
return (xMin <= rect.left && rect.right <= xMax &&
yMin <= rect.top && rect.bottom <= yMax);
}).attr('class', 'unprintable');
};
i można wywołać tę funkcję tak:
setUnprintableArea('container', 15, 45, 240, 70); // Zoom
setUnprintableArea('container', -55, 15, 0, 40, true); // Top-right Buttons
setUnprintableArea('container', 0, 430, Number.MAX_VALUE, Number.MAX_VALUE); // Horiz Scroll Bar
Jeśli chcesz coś ukryć, że jest wyrównany do prawej, ustaw rightAligned
param do true
ustawić oś y na prawej krawędzi SVG (czyli x = 0, przy prawej krawędzi) i ustawić Xmin oraz Xmax w związku z powyższym
ja to na ryba. http://jsfiddle.net/DXYne/1/
Czy to może być rozwiązanie?
Tak, 'display: none, visibility: hidden;' na elementach, klasie lub ID części svg. Ten kurs w mediach = drukuj –
Ale te elementy nie mają klasy id. Musi to być zrobione przez javascript – GreenRover
Z jQuery można to zrobić za pomocą [.hide()] (http://api.jquery.com/hide/) –