🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Salesforce

Salesforceは、クラウド型の顧客関係管理(CRM)、営業支援(SFA)などのサービスを提供している企業。米カリフォルニア州に本社があり、日本法人は株式会社セールスフォース・ドットコムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

2473閲覧

PDF出力時、表示している内容に合わせてheightを指定したい

ryohei0704

総合スコア10

Salesforce

Salesforceは、クラウド型の顧客関係管理(CRM)、営業支援(SFA)などのサービスを提供している企業。米カリフォルニア州に本社があり、日本法人は株式会社セールスフォース・ドットコムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2020/12/16 04:15

編集2020/12/16 06:09

お世話になっております。

現在の状況は下記です。

イメージ説明

赤矢印の部分について改ページせずに1つのページで表示したいです。

想定している改善策としては以下の2点を想定しています。

・縦幅を動的に設定する
・表示しているタグの中で改ページしないように設定する

今まで対応した手順は以下です。

(1)@pageのsizeを以下に設定する。

HTML

1@page { 2 size: 80mm auto; 3 margin: 0mm; 4}

期待:参照元のレコードを見て、縦方向に動的なサイズ
結果:反映されない、A4ほどのサイズで表示される

(2)page-break-系を使用する

HTML

1.page-break { 2 display:block; 3 /* 以下のいずれかを設定 */ 4 /* page-break-after: avoid; */ 5 /* page-break-before: avoid; */ 6 /* page-break-inside: avoid; */ 7} 8 9<div class="page-break"> 10 /* 対象の動的なテーブル */ 11</div>

期待:対象のテーブル内で改ページしない
結果:反映されない

ご確認お願い致します。

HTML

1<apex:page showheader="false" sidebar="false" applyHtmlTag="false" applyBodyTag="false" renderas="pdf"> 2 <html> 3 <head> 4 <style type="text/css"> 5 /** ページのサイズ・領域 */ 6 @page { 7 size: 80mm; 8 margin: 10px; 9 } 10 11 body { 12 font-family: "Arial Unicode MS"; 13 font-size: 10px; 14 } 15 16 table { 17 width: 100%; 18 table-layout: fixed; 19 } 20 21 .page-break { 22 display:block; 23 /* メモ:改ページ制御できない */ 24 /* page-break-after: avoid; */ 25 /* page-break-before: avoid; */ 26 /* page-break-inside: avoid; */ 27 } 28 </style> 29 </head> 30 <body> 31 <div class="page-break"> 32 <table border="1"> 33 <tbody> 34 <!-- <apex:repeat>を使用した動的なテーブル --> 35 </tbody> 36 </table> 37 </div> 38 </body> 39 </html> 40</apex:page>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2020/12/16 04:21

そもそもpdf出力は何を利用する前提でしょうか?
ryohei0704

2020/12/16 04:27

返信ありがとうございます。 今回Salesforceを使用しているのですが、取得したレコード(動的)を一覧で表示するPDFを作成しています。
Lhankor_Mhy

2020/12/16 05:57

どのようにしてPDFに出力しているのですか?
ryohei0704

2020/12/16 06:06 編集

Lhankor_Mhyさん 返信ありがとうございます。 今回Salesforceを使用しているのですが、以下のように出力しています。 コメントだとインデントが無効化されるので追記します。
Lhankor_Mhy

2020/12/16 06:25

「heightを指定したい」とのことですが、これはテーブルについてですか?
ryohei0704

2020/12/16 06:51

Lhankor_Mhyさん テーブルではなく、PDFに設定したいです。 印刷画面設定時の@pageのsizeの部分を動的にしたいと考えています。 @page { size: 80mm ????mm; margin: 10px; } ※????mmの部分です。 もしくはテーブルの途中で改ページしない方法でもOKです。
Lhankor_Mhy

2020/12/16 06:53

つまり、出力されるPDFのサイズを変えたいということですか? すごい長いPDFを作る、とかそういうイメージですか?
ryohei0704

2020/12/16 06:58

Lhankor_Mhyさん つまり、出力されるPDFのサイズを変えたいということですか? →はい。 すごい長いPDFを作る、とかそういうイメージですか? →出力するデータが大量であれば長くなります。 データが10件の場合、PDFのsizeの縦幅を100mm データが100件の場合、PDFのsizeの縦幅を1000mm のようなイメージです。
ryohei0704

2020/12/16 06:59

書いてて思いましたが、CSSではなく、JSっぽそうですね。
Lhankor_Mhy

2020/12/16 07:07

JSは効かないようなことがドキュメントに書いてありましたが…… >Visualforce ページを PDF として表示する機能は、印刷用にデザインされ、最適化されたページのためのものです。印刷用の書式設定が容易ではないか、入力やボタンなどのフォーム要素が含まれる標準コンポーネント、および書式設定に JavaScript が必要なコンポーネントは使用しないでください。 https://developer.salesforce.com/docs/atlas.ja-jp.pages.meta/pages/pages_compref_page.htm
ryohei0704

2020/12/16 07:15 編集

Lhankor_Mhyさん げっ・・・本当ですね。ちょっと確認次第、またご連絡します。 ありがとうございました。
guest

回答1

0

ベストアンサー

ご希望と異なる回答になりそうです。

まず、コミュニティに同様の質問が挙がっていましたが、解決していないようです。
visualforce - Increase PDF height to show in one page - Salesforce Stack Exchange

そして、別の質問を見ると、page-break系には「ページに収まること」という制限があるようです。
css - Unable to avoid the page breaking of a list in visualforce PDF - Salesforce Stack Exchange

さらに、そのページレンダラである、Flying Saucer のユーザーガイドを見ると、sizeルールはCSS3に準拠しているそうです。
Creating PDF Files | The Flying Saucer User's Guide

そして、CSSの仕様では、縦方向成り行きの設定をすることはできないようです。
size - CSS: カスケーディングスタイルシート | MDN

以上のことから、ご質問の実現は難しいのではないかと思います。2番目の質問のとおり、-fs-table-paginate を使ってみるぐらいしかないのでは。

投稿2020/12/16 07:16

Lhankor_Mhy

総合スコア36928

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryohei0704

2020/12/16 07:44 編集

詳細に調べていただきありがとうございました! Lhankor_Mhyさんをベストアンサーとさせていただきます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問