การจัดการ PDF: เค้าโครงหน้า“ 2-Up”


6

ฉันมี PDF (สร้างโดย PowerPoint) ที่มีหน้าแนวตั้งขนาด 8.5 × 5.5 นิ้ว

ฉันต้องแปลงเป็นหน้าแนวนอนขนาด 8.5 × 11 นิ้วที่หน้าแนวนอนแต่ละหน้ามีสำเนาต้นฉบับสองหน้า (เล็กกว่า) แบบเรียงต่อกัน

ในศิลปะ ASCII:

 Original  |    Desired
           | 
  |---|    |  |---| |---|
  | 1 |    |  | 1 | | 1 |
  | 1 |    |  | 1 | | 1 |
  |---|    |  |---| |---|
           |
  |---|    |  |---| |---|
  | 2 |    |  | 2 | | 2 |
  | 2 |    |  | 2 | | 2 |
  |---|    |  |---| |---|

มีวิธีฟรีในการทำเช่นนี้หรือฉันต้องทำใน C #

คำตอบ:


2

"พิมพ์" โดยใช้ pdfcreator (ไดรเวอร์เครื่องพิมพ์เสมือนโอเพ่นซอร์ส)

// แก้ไข: อีกตัวเลือกหนึ่งกำลังใช้ pdftk ( http://www.accesspdf.com/pdftk/ ) แต่ฉันไม่ได้ทดสอบด้วยตัวเอง


ฉันไม่เห็นวิธีการทำซ้ำหน้าในผู้สร้าง PDF (ดูศิลปะ ASCII ของฉัน)
SLaks

ตอนนี้ฉันทดสอบแล้ว ในกล่องโต้ตอบการพิมพ์ pdf ฉันเลือกที่จะทำสำเนาและพิมพ์หลายหน้าต่อแผ่น น่าเสียดายที่มันจัดกลุ่มหน้าแทนที่จะใส่ลงในสำเนาในหน้าเดียวกัน :( ฉันขอโทษสำหรับคำตอบที่ไม่ผ่านการทดสอบ
Maciek Sawicki

ถ้าฉันเล่นด้วยการเรียงหน้ามันอาจใช้ได้ คุณระบุหลายหน้าต่อแผ่นที่ไหน?
SLaks

ในกล่องโต้ตอบการพิมพ์ใน Acrobat Reader แต่น่าเสียดายที่ตัวเลือกการเรียงมีลักษณะแตกหักสำหรับการพิมพ์หลายหน้าต่อแผ่น ฉันยังตั้งค่าขนาดใหญ่เป็นสองเท่าในคุณสมบัติเครื่องพิมพ์ (กล่องโต้ตอบการพิมพ์ปุ่มคุณสมบัติใน Acrobat Reader) การตัดสไลด์ใน PowerPoint เป็นอย่างไร?
Maciek Sawicki

1
สไลด์ใช้เพจต้นแบบหลายหน้าที่มีการจัดรูปแบบที่แตกต่างกัน ฉันพยายามเขียนแมโครเพื่อคัดลอก แต่ฉันไม่สามารถจัดการรูปแบบได้อย่างถูกต้อง
SLaks

4

ตกลงคุณแก้ไขได้ด้วยการเข้าถึงไฟล์ต้นฉบับของไฟล์ PDF ของคุณไฟล์ Powerpoint คุณจะทำอย่างไรถ้าคุณต้องการบรรลุสิ่งเดียวกันโดยไม่ต้องเข้าถึงแหล่งข้อมูล

ขอผมถ่ายนี่หน่อย ฉันจะใช้ ...

  1. Ghostscript สำหรับการวางและเลื่อนหน้า PDF อินพุตไปยังขนาดสื่อใหม่
  2. pdftk เพื่อวางซ้อนหน้า PDF ที่แตกต่างกันสองหน้าลงในหน้าเดียว

ขั้นตอนแรก: Ghostscript เพื่อวางรูปภาพบนสื่อขนาดใหญ่

นี่คือสิ่งที่เราต้องการบรรลุด้วยความช่วยเหลือของ Ghostscript ในขั้นตอนนี้:

+-----------+-----------------------+
| Original  |  Ghostscript-output   |
+===========+=======================+
|  +---+    |  +---+---+  (right    |
|  | p |    |  | p |   |   half     |
|  | 1 |    |  | 1 |   |   of sheet |
|  +---+    |  +---+---+   empty)   |
|           |                       |
|  +---+    |  +---+---+  (left     |
|  | p |    |  |   | p |   half     |
|  | 2 |    |  |   | 2 |   of sheet |
|  +---+    |  +---+---+   empty)   |
+-----------+-----------------------+

นี่เป็นคำสั่งแรกที่ใช้:

gswin32c.exe ^
 -o left-side-outputs.pdf ^
 -sDEVICE=pdfwrite ^
 -g7920x6120 ^
 -dPDFSETTINGS=/prepress ^
 -c "<</PageOffset [0 0]>>setpagedevice" ^
 -f powerpoint.pdf

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

+-----------------------+
|  Ghostscript-output   |
+=======================+
|  +---+---+  (right    |
|  | p |   |   half     |
|  | 1 |   |   of sheet |
|  +---+---+   empty)   |
|                       |
|  +---+---+  (right    |
|  | p |   |   half     |
|  | 2 |   |   of sheet |
|  +---+---+   empty)   |
|                       |
|  +---+---+  (right    |
|  | p |   |   half     |
|  | 3 |   |   of sheet |
|  +---+---+   empty)   |
|  .........            |
+-----------------------+
 (left-side-outputs.pdf)

ตอนนี้วางภาพทั้งหมดไปทางขวา:

gswin32c.exe ^
 -o right-side-outputs.pdf ^
 -sDEVICE=pdfwrite ^
 -g7920x6120 ^
 -dPDFSETTINGS=/prepress ^
 -c "<</PageOffset [396 0]>>setpagedevice" ^
 -f powerpoint.pdf

นี่คือสิ่งที่เราทำได้ด้วยคำสั่งที่สอง:

+-----------------------+
|  Ghostscript-output   |
+=======================+
|  +---+---+  (left     |
|  |   | p |   half     |
|  |   | 1 |   of sheet |
|  +---+---+   empty)   |
|                       |
|  +---+---+  (left     |
|  |   | p |   half     |
|  |   | 2 |   of sheet |
|  +---+---+   empty)   |
|                       |
|  +---+---+  (left     |
|  |   | p |   half     |
|  |   | 3 |   of sheet |
|  +---+---+   empty)   |
|  .........            |
+-----------------------+
 (right-side-outputs.pdf)

ขั้นตอนที่สอง: ใช้ pdftk.exe เพื่อซ้อนทับหน้าคู่

ในกรณีที่คุณยังไม่ได้ติดตั้งให้ดาวน์โหลด จากที่นี่ . ไม่จำเป็นต้องติดตั้งจริง มันเป็นไฟล์. exe ซึ่งทำงานได้จากทุกที่ เราต้องการทำให้ผลลัพธ์เป็นดังนี้:

+---------------------+-------------+
| pdftk input         | pdftk output|
+=====================+=============+
| +---+---+ (right    | +---+---+   |
| | p |   |  half     | | p | p |   |
| | 1 |   |  of sheet | | 1 | 2 |   |
| +---+---+  empty)   | +---+---+   |
|                     |             |
| +---+---+ (left     |             |
| |   | p |  half     |             |
| |   | 2 |  of sheet |             |
| +---+---+  empty)   |             |
+---------------------+-------------+

เราจะใช้คำสั่งเหล่านี้:

pdftk.exe ^
   A=left-side-outputs.pdf ^
   B=right-side-outputs.pdf ^
   cat A1 B2  ^
   output 2up-powerpoint-page-1.pdf ^
   verbose

pdftk.exe ^
   A=left-side-outputs.pdf ^
   B=right-side-outputs.pdf ^
   cat A3 B4  ^
   output 2up-powerpoint-page-2.pdf ^
   verbose

ตกลงจนถึงตอนนี้เราสร้างสองหน้าแรกขึ้นสองครั้ง ... อย่างไรก็ตามตอนนี้ฉันต้องการเชื่อมสองหน้าสองหน้านี้ให้เป็นไฟล์เดียว:

pdftk.exe ^
  A=2up-powerpoint-page-1.pdf ^
  B=2up-powerpoint-page-2.pdf ^
  cat A B ^
  output 2up-powerpoint-all.pdf

ตอนนี้คุณควรมีแรงบันดาลใจมากพอที่จะประมวลผลหน้าเว็บที่เหลือ ... หากคุณมีความทะเยอทะยานอย่างยิ่งคุณจะเขียนสคริปต์ด้วย commandline เดียวโดยใช้สองซ้อน for /l ... ลูป ;-)


1

ฉันแก้ไขสิ่งนี้ด้วยการสร้างงานนำเสนอ PowerPoint ที่สองพร้อมสำเนาสองชุดของแต่ละสไลด์บันทึกเป็น PDF และพิมพ์ PDF ด้วยสองหน้าต่อแผ่น

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