0

通常、すべての問題を解決する答えを見つけることができるので、これは私がここで尋ねた最初の質問です。しかし、今週はかなりの壁にぶつかりました。

ページでキャンバスを使用していますが、これはうまく機能しており、画像ファイルとして保存できます。toDataURL を使用した後、印刷用に新しいウィンドウでキャンバスを開くボタンも作成しました。以下のコードを使用しています。

function printable() {
    var dataUrl = document.getElementById("mainCanvas").toDataURL("image/png");
    var windowContent = '<!DOCTYPE html>';
    windowContent += '<head><title>Print Map</title></head>';
    windowContent += '<body>';
    windowContent += '<img src = "' + dataUrl + '">';
    windowContent += '</body>';
    windowContent += '</html>';
    var printWin = window.open('', '', width = 340, height = 260);
    printWin.document.open();
    printWin.document.write(windowContent);
    printWin.document.close();
    printWin.focus();
    printWin.print();
}

これはうまく機能し、印刷ダイアログを開いてキャンバス画像を印刷します。問題は、画像が 1 ページよりも大きく、画像の最初のページしか印刷されないことです。キャンバスを複数のページにまたがって印刷する方法はありますか、またはこれをブラウザーからプリンターへの機能の悪さのせいにして、キャンバスをローカルに保存した後、印刷する必要があるユーザーに別のプログラムを使用させる必要がありますか?

ありがとう

4

1 に答える 1

0

愚かな解決策がありますが、間違いなく機能します。

スクリプトを使用してキャンバスを分割し、コンテンツをいくつかの別々のキャンバスに配置します。

次の関数を使用します。

ImageData getImageData(in float x, in float y, in float width, in float height);
void putImageData(in ImageData imagedata, in float dx, double dy, in float dirtyX Optional , in float dirtyY Optional , in float dirtyWidth Optional , in float dirtyHeight Optional );
于 2012-05-16T14:17:07.347 に答える