8

Google マップをランドスケープ PDF に埋め込もうとしていますが、どういうわけか、wkhtmltopdf は常にマップを 2 つの部分に分割しますが、マップは 1 ページに簡単に収まります。

問題は、マップがタイルで構築されていることだと思います。タイルはマップよりも大きく、切り取られていますが、wkhtmltopdf はこれを無視しているようで、切り取られたタイルもページに収まらなければならないと考えています...

これを再現するためのサンプルコードを次に示します。

<html>
    <head>
        <script src="https://maps.google.com/maps/api/js?sensor=false"></script>
        <script>
            window.onload = function(){                     
                var fenway = new google.maps.LatLng(47.188563,8.480487);
                var gmap = new google.maps.Map(document.getElementById("map"),{
                    center: fenway,
                    zoom: 14,
                    mapTypeId: google.maps.MapTypeId.ROADMAP,
                    disableDefaultUI: true
                });

                var marker = new google.maps.Marker({
                    position: fenway,
                    map:gmap
                });         

                google.maps.event.addListener(gmap,"tilesloaded",function(){
                    window.status = "ready";
                });
            }
        </script>
    </head>
    <body>
        <div id="map" style="width:1500px;height:800px"></div>
    </body>
</html>

そして、それを PDF に変換するコマンド:

wkhtmltopdf --window-status ready --orientation landscape map.html map.pdf

ちなみに、wkhtmltopdfの最新バージョンを使用しています...

カットせずに地図をページいっぱいにする可能性はありますか?

4

2 に答える 2

4

--page-widthおよび--page-heightオプションを使用しwkhtmltopdfて、ページと同じ縦横比のサイズを指定できます。おそらく、ボディの幅と高さを指定してこれを組み合わせる必要がありますが、出力 PDF をコンテンツで完全に埋めたい場合に便利です。

--page-width参考までに、およびオプションで受け入れられる 'UnitReal' は、--page-height単位付きの浮動小数点値を受け入れます。

(none) == mm
mm
cm == 10mm
m  == 1000mm
didot
inch
in == inch
pica
pc == pica
cicero
pixel
px == pixel
point
pt == point

ただし、両方とも同じ単位で指定する必要があることに注意してください。

于 2013-05-21T16:36:51.343 に答える
1

改ページを実際に無効にするわけではありませんが、本体の高さを設定すると、マップが 1 ページだけにレンダリングされます。

<body style="height:1000px;">
    <div id="map" style="width:1500px;height:800px;"></div>
</body>
于 2013-01-31T00:00:27.883 に答える