วิธีกำจัดหน้าว่างใน PDF ที่ส่งออกจาก SSRS


195

ฉันมีรายงาน SSRS สองหน้า เมื่อฉันส่งออกเป็น PDF มันใช้เวลา 4 หน้าเนื่องจากความกว้างของมันซึ่งหน้าที่ 2 และ 4 ได้แสดงเขตข้อมูลของฉันจากตาราง ฉันพยายามกำหนดขนาดโครงร่างในคุณสมบัติรายงานเป็น width = 18in และ height = 8.5in

มันให้ตารางทั้งหมดในหน้าเดียวของ PDF แต่ฉันยังคงว่างหน้าที่ 2 และ 4

เป็นวิธีที่ฉันทำผิดหรือเปล่า? ฉันจะกำจัดหน้าว่างเหล่านั้นได้อย่างไร

คำตอบ:


345

ใน BIDS หรือ SSDT-BI ให้ทำดังนี้:

  1. คลิกที่รายงาน> คุณสมบัติรายงาน> แท็บเค้าโครง (แท็บตั้งค่าหน้ากระดาษใน SSDT-BI)
  2. จดบันทึกค่าสำหรับความกว้างของหน้า , ระยะขอบด้านซ้าย , ระยะขอบด้านขวา
  3. ปิดและกลับไปที่พื้นผิวการออกแบบ
  4. ในหน้าต่างคุณสมบัติเลือกร่างกาย
  5. คลิกสัญลักษณ์ + เพื่อขยายโหนดขนาด
  6. จดบันทึกค่าสำหรับความกว้าง

หากต้องการแสดงใน PDF อย่างถูกต้องความกว้างของร่างกาย + ระยะขอบด้านซ้าย + ระยะขอบด้านขวาจะต้องน้อยกว่าหรือเท่ากับความกว้างของหน้า เมื่อคุณเห็นหน้าเปล่าที่จะแสดงผลมันเกือบตลอดเวลาเนื่องจากความกว้างของเนื้อความและระยะขอบนั้นมากกว่าความกว้างของหน้ากระดาษ

ข้อควรจำ: (ความกว้างของร่างกาย + ระยะขอบซ้าย + ระยะขอบขวา) <= (ความกว้างของหน้า)


14
ใช้งานไม่ได้ ความกว้างร่างกายของฉันน้อยกว่า "ความกว้างรายงาน - ระยะขอบ" และฉันก็ยังมีหน้าว่างอยู่ในนั้น
adolf กระเทียม

2
@adolfgarlic ฉันพบว่าการตั้งค่าความกว้างของหน้าไม่ทำงานอย่างถูกต้องภายใต้คุณสมบัติของรายงาน คุณได้ลองลากความกว้างของรายงานใน Visual Studio ด้วยตนเองหรือไม่ ที่แก้ไขปัญหานี้สำหรับฉันวันนี้หลังจากต่อสู้หัวของฉันกับกำแพงในขณะที่ดี จะคุ้มค่าที่จะตรวจสอบความกว้างส่วนหัว / ส่วนท้ายของคุณเช่นกันพวกเขาอาจใหญ่เกินไปเล็กน้อย
ไมเคิล A

15
ฉันพบว่ากฎที่ทำงานที่นี่ไม่ใช่ (ความกว้างของร่างกาย + ระยะขอบซ้าย + ระยะขอบขวา) <= (ความกว้างของหน้า) แต่ชอบมากขึ้น (ความกว้างของร่างกาย + ขอบซ้าย + ระยะขอบขวา) <(หน้ากว้าง
-1

3
อีกสิ่งที่ควรทราบคือความสูงของส่วนหัว + ร่างกาย + ส่วนท้าย + ด้านบน + ขอบด้านล่าง <ความสูงของหน้ามิฉะนั้นหน้าจะไหลในหลายหน้า
desiguy

4
เมื่อคุณสร้างรายงานเป็นครั้งแรกผู้สร้างจะเรียกใช้พื้นที่สีขาว ("ร่างกาย" ที่นาธานกล่าวถึง) ผ่านความกว้างของหน้าจอเพื่อวางสิ่งของ โดยทั่วไปพื้นที่สีขาวนี้มีความกว้าง 17 นิ้วบนหน้าจอกล่องจดหมายที่ใหม่กว่า สิ่งที่ไม่ชัดเจนโดยสังหรณ์คือสิ่งนี้ถือว่าเป็นวัตถุที่พิมพ์ได้และต้องแคบลงตามความกว้างของสิ่งที่คุณวางไว้ หากคุณไม่ทำเช่นนี้คุณจะได้รับหน้าเปล่าไม่ว่าใครจะพูดถึงอะไรก็ตาม
BobRodes

112

สิ่งที่ต้องลองก็คือการตั้งค่าคุณสมบัติรายงานที่เรียกว่าConsumeContainerWhitespaceการTrue(เริ่มต้นคือfalse) นั่นเป็นวิธีที่ได้รับการแก้ไขสำหรับฉัน


2
อ๋อทำงานให้ฉันด้วย ฉันมีคอนเทนเนอร์ที่มี tablix กับกลุ่มคอลัมน์ เห็นได้ชัดว่าคอนเทนเนอร์กำลังเติบโตเพื่อให้มีกลุ่มคอลัมน์และโดยไม่ต้องใช้พื้นที่สีขาวของคอนเทนเนอร์มันจะเกินขอบเขตหน้า
Ciarán

4
นี่เป็นกุญแจสำคัญสำหรับฉันอย่างแน่นอน ฉันมักจะใช้คำตอบที่นาธานยอมรับด้วยผลลัพธ์ที่หลากหลาย ในแต่ละกรณีที่วิธีการแก้ปัญหาของนาธานไม่ได้แก้ปัญหาปัญหานี้ก็เกิดขึ้นได้ ระวังให้ดีว่าคุณยังควรใช้สิ่งที่นาธานแนะนำ
bojingo

ใช่ x100! มันแย่มากที่คุณไม่มี "คำตอบที่ยอมรับได้ 2" เพราะดูเหมือนว่าหลักสูตรที่เหมาะสมคือคำสั่งผสมของทั้งสองสิ่งนี้และคำตอบที่ยอมรับได้ ขอชื่นชมคุณ!
NateJ

2
อ๊ะเอามันกลับมา ฉันใช้ VS 2017 SSRS / SSDT เอาฉันในขณะที่จะคิดออกคุณต้องใช้คุณสมบัติของหน้าต่างที่จะหาคุณลักษณะนี้ไม่Report Properties...โต้ตอบ
codeMonkey

1
ที่ได้ผลสำหรับฉันหลังจากดิ้นรนอยู่พักหนึ่ง ... ขอบคุณมาก
Joel_J

28

หลังจากชั่วโมงของการดิ้นรนกับปัญหานี้ฉัน stumbled โซลูชันที่ทำงานให้ฉัน:

ใน SSDT (2012) ฉันมีการตั้งค่าหน่วยตั้งค่าหน้า / หน้าเป็นเซนติเมตร เมื่อฉันเปลี่ยนสิ่งนี้เป็นนิ้วแปลกพอฉันสามารถส่งออกรายงานของฉันเป็น PDF ได้โดยไม่ให้หน้าอื่นว่างเปล่า

ป้อนคำอธิบายรูปภาพที่นี่


สิ่งนี้ใช้ได้สำหรับฉันอย่างสมบูรณ์แบบ การเปลี่ยนนิ้วเป็นเซนติเมตรจะทำงานหรือกลับกัน แต่ก็ไม่จำเป็นต้องติดขัด อีกสิ่งหนึ่งคือต้องกำหนดระยะขอบอย่างน้อย 1 ซม. จากนั้นสร้างรายงานโดยไม่มีหน้าว่างเพิ่มเติม
Ravi Shankar

21

เป็นการดีกว่าที่จะทำสิ่งนี้บนพื้นผิวการออกแบบ ( แสดง Visual Studio 2012 แต่สามารถทำได้ในรุ่นอื่น ๆ ) ก่อนที่จะคำนวณคณิตศาสตร์ใด ๆ เมื่อแก้ไขเอกสาร SSRS

ด้านล่างหมายเลขต่อไปนี้ในวงกลมสีแดงที่จับคู่กับขั้นตอนต่อไปนี้:

  1. ในพื้นผิวการออกแบบบางครั้งตัวแก้ไขจะสร้างสิ่งpageที่มีขนาดใหญ่กว่าตัวควบคุมจริง ดังนั้นพื้นที่ผีที่ถูกพิมพ์
  2. ปรับขนาดเป็นตัวควบคุม มองเห็นความกว้าง / ความสูงและดูว่าคุณไม่สามารถนำหน้า บนพื้นผิวการออกแบบเพื่อกำหนดขนาดให้กับพื้นที่ที่ต้องการโดยตัวควบคุมและไม่ต้องเพิ่มเติม
  3. จากนั้นลองสร้าง PDF และดูว่าแก้ไขได้หรือไม่
  4. หาก # 3 ไม่สามารถแก้ปัญหาแล้วยังมีการควบคุมที่กำหนดมากเกินไปของขนาดหน้าจริงและจะไปทั้งในความยาว / กว้าง ดังนั้นเราจะต้องทำให้ขนาดของตัวควบคุมเล็กลงเพื่อรองรับขนาดหน้ากระดาษที่เล็กลง

ขั้นตอนในการแก้ไขด้วยตนเอง


นอกจากนี้ในบางสถานการณ์เราสามารถเปลี่ยนคุณสมบัติของหน้ารายงานได้ด้วยการตั้งค่าConsumeContainerWhitespaceให้trueใช้พื้นที่โดยอัตโนมัติ


2
ขอบคุณ! ฉันรู้ว่ามันจะง่ายกว่าการผ่านตัวเลขและทำคณิตศาสตร์ ฉันไม่ทราบว่ากำลังพิมพ์ whitepace เพียงเพราะเนื้อหารายงานมีขนาดใหญ่
Tor

การตั้งค่า ConsumeContainerWhitespace เป็นจริงสำหรับฉัน ฉันล้างรายงานร่างกายและความกว้างของตารางเรียบร้อยแล้ว
Jon Dosmann

18

ปัญหาสำหรับฉันคือการที่ SSRS ตั้งใจปฏิบัติพื้นที่สีขาวของคุณราวกับว่าคุณตั้งใจจะให้เกียรติ:

ป้อนคำอธิบายรูปภาพที่นี่

ตรวจสอบให้แน่ใจว่าไม่มีระยะห่างที่เหมาะสมเช่นเดียวกับพื้นที่สีขาว


1
สวัสดี @ jeremy-thompson เคล็ดลับของคุณมีประโยชน์มาก ไชโย
แอนดี้เค

1
การลบระยะขอบด้านขวานั้นใช้งานได้สำหรับฉันและไม่มีผลต่อการแสดงผลในโปรแกรมดูรายงานเว็บหรือ PDF
andrej351

1
5 ปีต่อมานี่คือสิ่งที่ฉันต้องการ
MPJ567

17

หากหน้าว่างมาจาก SSRS คุณต้องปรับแต่งเค้าโครงรายงานของคุณ สิ่งนี้จะมีประสิทธิภาพมากกว่าการรันเอาต์พุตผ่านและกระบวนการหลังเพื่อซ่อมแซมผลข้างเคียงของปัญหาการจัดวาง

SSRS นั้นค่อนข้างพิถีพิถันเมื่อพูดถึงการผลักขอบเขตของระยะขอบ เป็นการง่ายที่จะขยาย / ขยายรายงานโดยไม่ตั้งใจเพียงแค่ปรับกล่องข้อความหรือตัวควบคุมอื่น ๆ ในรายงาน ตรวจสอบคุณสมบัติความกว้างและความสูงของพื้นผิวรายงานอย่างระมัดระวังและบีบให้มากที่สุด ระวังหัวกระดาษและท้ายกระดาษขนาดใหญ่


5

นอกเหนือจากระยะขอบซึ่งเป็นปัญหาที่พบบ่อยที่สุดแล้วฉันยังเห็นความเป็นไปได้อีกสองประการ:

  1. การใช้+เพื่อเชื่อมข้อความ คุณควรใช้&แทน
  2. ข้อความล้นความกว้างของกล่องข้อความที่ระบุ ดังนั้นหากกล่องข้อความของคุณมีเพียง 30 ตัวอักษรและคุณพยายามยัดเยียด 300 ในนั้นคุณอาจท้ายด้วยหน้าพิเศษ

5

ฉันทำงานกับ SSRS มานานกว่า 10 ปีและคำตอบข้างต้นคือคำตอบ แต่. หากไม่มีอะไรใช้งานได้และคุณถูกยัด .... ลบรายการออกจากรายงานจนกว่าปัญหาจะหายไป เมื่อคุณระบุว่าแถวหรือรายการรายงานใดก่อให้เกิดปัญหาให้วางลงในคอนเทนเนอร์สี่เหลี่ยม แค่นั้นแหละ. ช่วยเราหลายต่อหลายครั้ง! หน้าพิเศษส่วนใหญ่เกิดจากรายการรายงานไหลผ่านระยะขอบด้านขวา เมื่อทุกอย่างล้มเหลวการวางสิ่งต่าง ๆ ไว้ในสี่เหลี่ยมผืนผ้าหรือสี่เหลี่ยมผืนผ้าเปล่าทางด้านขวาของรายการสามารถหยุดสิ่งนี้ไม่ให้เกิดขึ้นได้ ขอให้โชคดี!


มันใช้งานได้สำหรับฉันโดยเพิ่มคอลัมน์ว่างเข้าไปในตารางรายงานของฉันในรูปแบบ pdf จะไม่แสดงหน้าว่างพิเศษ .. !
หิ่งห้อย

4

คุณพยายามดูว่ามีพื้นที่สีขาวอยู่ทางด้านขวาของรายงานหรือไม่ ถ้าเป็นเช่นนั้นคุณสามารถลากกลับไปที่ส่วนท้ายของรายงานแล้วลากพื้นหลังของรายงานกลับไปที่จุดเดิม


4

บนแท็บคุณสมบัติของรายงาน (myReport.rdlc) ให้เปลี่ยนแอตทริบิวต์ "Keep Together" เป็น False ฉันดิ้นรนกับปัญหานี้มาระยะหนึ่งแล้วและนี่ดูเหมือนจะแก้ไขปัญหาของฉันแล้ว ป้อนคำอธิบายรูปภาพที่นี่


3

ฉันเพิ่งได้รับรายงานที่ฉันต้องทำการเปลี่ยนแปลงเล็กน้อย หลังจากทำตามคำแนะนำทั้งหมดข้างต้นแล้วก็ไม่ได้ช่วยอะไร รายงานในอดีตมีหน้าพิเศษนี้และไม่มีใครสามารถหาสาเหตุได้

ฉันคลิกขวาบน tablix และคุณสมบัติที่เลือก มีการทำเครื่องหมายในช่องทำเครื่องหมายว่ากล่าวเพิ่มตัวแบ่งหน้าหลังจาก หลังจากลบสิ่งนี้มันจะพิมพ์บนหนึ่งหน้าตอนนี้

ป้อนคำอธิบายรูปภาพที่นี่


2

หากรายงานของคุณมีรายงานย่อยความกว้างของรายงานย่อยอาจผลักขอบเขตของเนื้อหาหากรายงานย่อยและลำดับชั้นได้รับอนุญาตให้เติบโต ฉันมีปัญหาที่คล้ายกันเกิดขึ้นกับรายงานย่อยที่สามารถวางไว้ในเซลล์ (ซึ่งประกอบไปด้วย 2 คอลัมน์) ดูเหมือนว่า span จะมีอยู่ในตัวออกแบบและมันก็แสดงผลได้ดีใน winform หรือเบราว์เซอร์และในขั้นต้นมันสามารถสร้างเอาต์พุตของเครื่องพิมพ์
จากนั้นหลังจากเปลี่ยนความกว้างคอลัมน์อื่น ๆ (และไม่เกินความกว้างของร่างกายบวกระยะขอบ) การเรนเดอร์ winform และการแสดงผลบนเบราว์เซอร์ดูยังดีอยู่ แต่เมื่อสร้างผลลัพธ์ (เครื่องพิมพ์หรือ PDF) มันขยายตัวผ่านระยะขอบและเขียนด้านขวา ของแต่ละหน้าเป็นหน้า 2 (4 ฯลฯ ) ฉันสามารถกำจัดปัญหาของฉันโดยการเพิ่ม colspan ซึ่งเป็นที่ตั้งของรายงานย่อย
ไม่ว่าคุณจะใช้รายงานย่อยหรือไม่ถ้าคุณมีหน้ากระดาษที่ล้นเกินและการออกแบบตัวถังของคุณพอดีกับระยะขอบของหน้าเว็บให้มองหาสิ่งที่ได้รับอนุญาตให้เติบโตขึ้นซึ่งจะขยายความกว้างของร่างกายออกไป


-3

ฉันใช้ pdftk สำเร็จเพื่อลบหน้าเว็บที่ฉันไม่ต้องการ / ต้องการใน pdf คุณสามารถดาวน์โหลดโปรแกรมได้ที่นี่

คุณอาจลองทำสิ่งต่อไปนี้ นำมาจากที่นี่ภายใต้ตัวอย่าง

ลบ 'หน้า 13' จาก in1.pdf เพื่อสร้าง out1.pdf pdftk in.pdf cat 1-12 เอาต์พุต 14-out out1.pdf

หรือ:

pdftk A = in1.pdf cat A1-12 A14-end เอาท์พุต out1.pdf

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.