ฉันจะทำซ้ำหน้าภายในไฟล์ PDF โดยอัตโนมัติได้อย่างไร


10

ฉันมีไฟล์ PDF จำนวนมากที่มีหน้า 1 ถึง 4 หน้า ฉันต้องการโซลูชันที่สร้างไฟล์ใหม่โดยอัตโนมัติสำหรับแต่ละไฟล์เหล่านี้ ไฟล์ใหม่ควรมีเนื้อหาของไฟล์ต้นฉบับสองครั้ง (เช่นหน้า 1 จนถึงท้ายแล้วตามด้วยหน้าเดียวกันตามลำดับเดียวกันอีกครั้ง)

ฉันจะทำสิ่งนี้ได้อย่างไร


3
โปรดอธิบายเราไม่สามารถอ่านความคิดของคุณ ใบเรียกเก็บเงินคืออะไร? คุณต้องการสร้างไฟล์ pdf ใหม่ที่มีทุกหน้าของต้นฉบับสองครั้งหรือไม่ ในลำดับใด คุณต้องการหน้า 1a แล้วตามด้วยหน้า 1b หรือคุณต้องการทั้ง 4 หน้าก่อนและจากนั้นทั้งสี่หน้าอีกครั้ง? คุณใช้ระบบปฏิบัติการอะไร คุณใช้เครื่องมือใดในการสร้างไฟล์ PDF
terdon

คำตอบ:


15

โซลูชันสำหรับ Windows ที่ใช้PDFtk (ซึ่งดูเหมือนว่าคุณจะใช้งานตามแท็ก):

สิ่งนี้จะส่งผลให้ PDF ที่มีหน้า 1-end แล้วตามด้วย 1-end อีกครั้ง:

pdftk in.pdf cat 1-end 1-end output out.pdf

หากคุณต้องการให้แต่ละหน้าซ้ำกัน (เช่นใน 1,1,2,2, ... ) ให้ใช้ไฟล์แบตช์ต่อไปนี้:

@echo off
set pages=
setlocal enabledelayedexpansion
for /f "tokens=2" %%a in ('pdftk in.pdf dump_data ^| find /i "NumberOfPages"') do for /l %%b in (1,1,%%a) do set pages=!pages! %%b %%b
pdftk in.pdf cat!pages! output out.pdf

ขอบคุณมาก: "pdftk in.pdf cat 1-end 1-end output out.pdf" ทำตามที่ฉันต้องการ สิ่งเดียวที่ขาดหายไปคือการวนซ้ำที่นำไฟล์ pdf ทั้งหมดจากไดเรกทอรีและสร้างไฟล์ใหม่ทั้งหมดขอบคุณมากสำหรับการช่วยเหลือฉันอีกครั้ง ฉันจะขอบคุณและเชิญภรรยาของฉันมาทานอาหารค่ำพร้อมกับเวลาที่บันทึกไว้ ;-)))
Marc

@ Marc: การวนซ้ำทำได้ง่าย เพียงแค่ไปที่ไดเรกทอรีที่มีไฟล์ PDF for %a in (*.pdf) do @pdftk "%~a" cat 1-end 1-end output "%~na (Duplicated)%~xa"และในคำสั่งประเภทพรอมต์ สำหรับแต่ละin.pdf (ชื่อสามารถเป็นอะไรก็ได้) นี้จะมีผลในการที่สอดคล้องกันใน (ซ้ำ) เพลิดเพลินกับอาหารค่ำของคุณและอย่าลืมรับคำตอบ (คลิกที่เครื่องหมายถูกสีเขียวทางด้านซ้าย) ถ้ามันช่วยคุณได้!
Karan

infinete ขอบคุณคุณ - คุณได้ช่วยชีวิตฉันไว้! ฉันขอบคุณมากสำหรับความช่วยเหลือของคุณ!
Marc

2

ฉันอาจให้ทางออกที่ดีกว่าถ้าคุณตอบคำถามในความคิดเห็นของฉัน แต่เพื่อประโยชน์ของภรรยาของคุณนี่คือคำแนะนำสองสามข้อ

ImageMagickเป็นเครื่องมือบรรทัดคำสั่งข้ามแพลตฟอร์มสำหรับการจัดการรูปภาพ เมื่อคุณติดตั้งแล้วคุณควรจะสามารถใช้convertเครื่องมือเพื่อทำสิ่งที่คุณต้องการ รายละเอียดขึ้นอยู่กับระบบปฏิบัติการของคุณ ฉันสมมติว่าคุณต้องการสองไฟล์ทั้งหมดไม่ใช่สองหน้า

  1. Linux / OSX / Unix ฯลฯ

    for n in *pdf; do convert -density 150 "$n" "$n" "$n"; done
    

    สิ่งนี้จะเขียนทับไฟล์ที่มีอยู่คุณอาจต้องการสำรองข้อมูลก่อน

  2. ของ windows นี่อาจผิดเล็กน้อยฉันไม่ได้ใช้ Windows ดังนั้นฉันไม่สามารถทดสอบได้ แต่ความคิดทั่วไปควรเป็นแบบนี้

    for %f in (*.pdf) do (convert.exe %f %f %f)
    

การforวนซ้ำของคุณหายไปdoneและ$nควรจะเสนอราคา บางทีฉันอาจจะพลาดวิธีการconvertทำงาน แต่สิ่งที่จะconvertทำเมื่อคุณส่งไฟล์เดียวกันสามครั้ง? ฉันไม่สามารถทดสอบได้ในตอนนี้
slhck

ขอบคุณ @slhck คุณนับทั้งคู่ได้ตามปกติ convert infile1 infile2 ... infileN outfileแปลงรูปแบบทั่วไปคือ ดังนั้นถ้าคุณส่งไฟล์เดียวกันสามครั้งมันจะเอามันสองครั้งเป็นอินพุตแล้วเขียนไปยังไฟล์เดียวกับเอาท์พุท ที่ฉันทำแบบทดสอบ :)
terdon

โอ้เย็นแล้วผมได้เรียนรู้บางสิ่งบางอย่างเช่นกัน :)
slhck

ฟังดูดีสำหรับฉัน. ขอบคุณมาก. ความคิดเห็นข้างต้น: ฉันลองครั้งแรกและมันทำงานได้อย่างสมบูรณ์แบบเฉพาะลูปที่ถูกต้องที่ฉันยังคง seraching สำหรับ .... คุณช่วยฉันอีกครั้งได้ไหม ขอบคุณมากล่วงหน้า!
Marc

@ Marc ขออภัยฉันไม่แน่ใจว่าคุณหมายถึงอะไร ความคิดเห็นใด ห่วงไหน หน้าต่างหรือทุบตี?
terdon

2

หากคุณต้องการให้แต่ละหน้าซ้ำกัน (ใน 1,1,2,2, ... ) บน Linux สคริปต์นี้จะทำ:

#!/bin/bash
INPUTFILE=$*
PAGENUM=`pdftk ${INPUTFILE} dump_data | grep NumberOfPages | cut -d : -f 2  | cut -d " " -f 2`
PAGES=`seq 1 ${PAGENUM}`
DUPAGES=`for i in ${PAGES} ; do echo $i $i | tr "\n" " " ; done`
OUTPUT=`basename ${INPUTFILE} .pdf`.dup.pdf
pdftk ${INPUTFILE} cat ${DUPAGES} output ${OUTPUT}

0

หากคุณไม่ได้ติดตั้ง pdftk แต่เป็น poppler-utils ให้ใช้คำสั่งนี้:

for f in *
do
    pdfjoin $f $f
done

สิ่งนี้เกี่ยวข้องอย่างยิ่งกับ Fedora 21 ซึ่ง pdftk ไม่สามารถใช้ได้ในที่เก็บอีกต่อไป


0

pdfuniteการใช้งานง่าย สิ่งนี้สามารถทำให้ง่ายขึ้นด้วยความรู้ด้านสคริปต์เพิ่มเติม

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

pdfunite 1.pdf 2.pdf 3.pdf 4.pdf result.pdf
pdfunite result.pdf result.pdf result.pdf 3-times-result.pdf

0

สำหรับการทำซ้ำหน้าใน pdf 4 หน้า (1,1,2,2,3,3,4,4) ใน Linux ที่มี pdftk ติดตั้งแล้วรายการนี้ใช้งานได้สำหรับฉัน:

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