2017-11-16 14 views
0

対象となるウェブページからPDFを動的に生成し、ブラウザに戻すノードプログラムを作成しています。私はPDF生成のために人形を使っています。私が設計しているウェブページは製品カタログです。puppeteerで生成されたPDFに選択的にマージンを適用する方法はありますか?

このカタログでは、最初のページを余白のないフルサイズのグラフィックにしたいが、残りのPDF(大きなテーブル)では、ドキュメントに余白を適用したい。

私のコードは次のようになります。

let viewportOptions = { 
    width: 1680, 
    height: 948, 
    isLandscape: eval(req.params.orientation === "landscape") 
}; 

let pdfOptions = { 
    path: "", 
    format: "letter", 
    scale: 1, 
    landscape: eval(req.params.orientation === "landscape"), 
    printBackground: true, 
    deviceScaleFactor: 2 
    margin: { top: "1cm", bottom: "1cm", left: "1cm", right: "1cm" } 
}; 

(async() => { 
    const browser = await puppeteer.launch(); 
    const page = await browser.newPage(); 
    page.setViewport(viewportOptions); 
    await page.goto(`${fileData}`, { waitUntil: "networkidle2" }); 
    page.emulateMedia(null); 
    const PDFresult = await page.pdf(pdfOptions); 
    res.contentType("application/pdf"); 
    res.send(PDFresult); 
    await browser.close(); 
})(); 

私は文書全体に何ら問題はマージンを適用することはできませんが、最初の以下のページのみに余白を適用するための良いプログラム的な方法はありますか?私は人形師APIの中でこれを行う方法は見当たりませんが、これを達成する別の方法が必要です。

ありがとうございました!

答えて

0

page.pdf(オプション)=== ctrl + pだから、高さと幅を設定したい場合は、最終的な結果を得るためにページの高さと幅を設定する必要があります。 このコードを試してください:

await page1.setViewport({ 
    width: 1920, height: 1080, fitWindow: false, deviceScaleFactor: 1, mobile: false, waitLoad: true, 
    waitNetworkIdle: true 
}); 
await common.launch(page1); 
関連する問題