Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Default page size option #250

Open
MurakamiShinyu opened this issue Feb 7, 2022 · 2 comments
Open

Default page size option #250

MurakamiShinyu opened this issue Feb 7, 2022 · 2 comments

Comments

@MurakamiShinyu
Copy link
Member

MurakamiShinyu commented Feb 7, 2022

Vivliostyle CLIのbuildコマンドで出力されるPDFのページサイズは、スタイルシートあるいは --size オプションでの指定があれば指定されたものになりますが、指定がない、あるいは size: auto の指定の場合、ブラウザのビューポートのサイズが使われることになっており、HeadlessChrome/Puppeteerでのそのデフォルトのサイズが 800px x 600px であるために、このサイズからVivliostyle ViewerのUI部分の高さ(上部36px、下部24pxの合計60px)を引いた 800px x 540px となっています。

この現状のデフォルトのページサイズはあまり役に立ちません。一般的な文書のページサイズに近いものをデフォルトにしたほうがよいと思います。たぶんLetterサイズ 8.5in x 11in (816px x 1056px = 216mm x 279mm) などが無難だと思います。(高さ60pxを加えたビューポートのサイズを指定するとよい)

参考: PuppeteerでのViewportの指定:
https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#pagesetviewportviewport

このデフォルトのページサイズを指定できるオプションがあるとよいかもしれません。現状のCLIには --size オプションがありますが、これはスタイルシートで指定されているページサイズを上書きしてしまいます(!important を出力している)。たとえば --default-size A4 のように指定できるとよいと思います。

@MurakamiShinyu
Copy link
Member Author

ブラウザのウインドウサイズが利用できない場合のページサイズautoの問題は、Vivliostyle CLIだけの問題ではないので、Vivliostyle.js側で対処することにしました。

When page size is not specified or auto, Vivliostyle uses the window size to determine the page size.
The problem here is when the window size is not available, i.e., window size is 0 or browser is in headless mode.

To solve the problem, now we use the fallbackPageSize:

    const fallbackPageSize = {
      // compromise between A4 (210mm 297mm) and letter (8.5in 11in)
      width: 794, // 210mm (8.27in)
      height: 1056, // 279.4mm (11in)
    };

このコメントに書いているとおり、fallbackPageSize はA4サイズとLetterサイズの折衷としました。どちらの用紙サイズを使うユーザーも印刷するのに困らないように。

@MurakamiShinyu
Copy link
Member Author

Vivliostyle.js側での修正により、元のissueの最後の次の部分以外は解決しました。

このデフォルトのページサイズを指定できるオプションがあるとよいかもしれません。現状のCLIには --size オプションがありますが、これはスタイルシートで指定されているページサイズを上書きしてしまいます(!important を出力している)。たとえば --default-size A4 のように指定できるとよいと思います。

優先度はあまり高くないと思いますが、このissueはタイトルを変更して残しておきます。

@MurakamiShinyu MurakamiShinyu changed the title Default page size of output PDF Default page size option Feb 14, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant