ウェブページのインラインSVGセグメントをPDFとして保存できます。これは、ブラウザの '印刷..'機能、ウィンドウイベントonbeforeprint,onafterprint、プラスwindow.matchMedia、および 'Save as PDF'を使用します。
PDFには、スナップショットという素晴らしい機能があり、PDFのSVGイメージをトリミングして、任意のイメージエディタで.pngファイルとして保存することができます。
注:以下をあなた自身のHTMLファイルにコピーしてください。 (プログラムされたとして、それがこのstackoverflowのページに含まれているので、それが印刷されません。)
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Save SVG as PDF</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body style='padding:10px;font-family:arial'>
<center>
<h4>Save SVG as PDF</h4>
<div style='width:90%;background-color:gainsboro;text-align:justify;padding:10px;border-radius:6px;'>
You can save the inline SVG segment of your web page as a PDF. This uses the browser's 'Print..' feature, the window events <b>onbeforeprint</b>, <b>onafterprint</b>, plus <b>window.matchMedia</b>, and 'Save as PDF'.
</div>
<table><tr>
<td>
<div style="padding:10px;width:400px;text-align:justify">
<b>Scenerio:</b><br />
Select the browser's <b>Print..</b>, choose 'Save as PDF' option , then select <b>Save</b>.<br> <br>
The function <b>beforePrint</b> hides all elements except the DIV containing the inline SVG, plus the DIV is postioned to top/left at 0 px.
<br><br>
The function <b>afterPrint</b> returns the elements to their original visibility and locatons.<br> <br>
The event <b>window.matchMedia</b> automatically calls the above functions for Chrome.<br>
Both IE and FF use the window events <b>onbeforeprint</b> and <b>onafterprint</b>.
</div>
</td>
<td>
<div id="svgDiv" style='background-color:lightgreen;width:400px;height:400px;'>
<svg id="mySVG" width="400" height="400">
<circle cx=200 cy=200 fill=yellow r=150 stroke=none />
</svg>
</div>
</td>
</tr></table>
<script id=myScript>
function beforePrint()
{
document.body.style.visibility="hidden"
svgDiv.style.visibility='visible'
svgDiv.style.position="absolute"
svgDiv.style.top="0px"
svgDiv.style.left="0px"
}
function afterPrint()
{
document.body.style.visibility=""
svgDiv.style.visibility=''
svgDiv.style.position=""
svgDiv.style.top=""
svgDiv.style.left=""
}
//---Chrome Browser---
if (window.matchMedia)
{
var mediaQueryList = window.matchMedia('print');
mediaQueryList.addListener(function(mql)
{
if (mql.matches)
{
beforePrint();
}
else
{
afterPrint();
}
}
);
}
//---IE & FF---
window.onbeforeprint = beforePrint
window.onafterprint = afterPrint;
</script>
</body>
</html>
あなたはその後、「PDFとして保存」を選択し、ブラウザの印刷...リクエストの使用を検討してますか?その場合は、ページビューではなく、DIV innerHTMLのみを保存するように調整できます。これを考慮したい場合は、例を投稿することができます。 –
はい私はあなたが私のsvgがうまくいくことを望む例を投稿することを検討するだろう –
svg image.thatの代わりにpng/jpegイメージを使う – Lini