페이지 당 양면이있는 PDF를 페이지 당 1면으로 변환하려면 어떻게해야합니까?
페이지 당 양면이있는 PDF를 페이지 당 1면으로 변환하려면 어떻게해야합니까?
답변:
문제는 Acrobat (Reader가 아닌 정식 버전)의 도움으로 이미 해결되었습니다. 그러나 Acrobat에 액세스 할 수 없으면 어떻게해야합니까? Ghostscript와 pdftk로도 가능합니까?
... 재미있게하기 위해 "더블 업"페이지가 아닌 입력 파일을 사용하고 "트레블 업"이있는 입력 파일을 사용하겠습니다. 실제로, 나는 오늘 그러한 PDF를 이메일로 받았습니다. 그것은 Leporello의 Scheme에 접힌 전단지였습니다 . 시트 크기는 A4 가로 (842pt x 595pt)이며 다음과 같이 접 히고 배치되었습니다.
Front side to be printed, page 1 of PDF
+--------+--------+--------+ ^
| | | | |
| 5 | 6 | 1 | |
| | | | 595 pt
| | | | |
| | | | |
| | | | |
+--------+--------+--------+ v
^ ^
fold fold
v v
+--------+--------+--------+ ^
| | | | |
| 2 | 3 | 4 | |
| | | | 595 pt
| | | | |
| | | | |
| | | | |
+--------+--------+--------+ v
Back side to be printed, page 2 of PDF
<---------- 842 pt -------->
6 페이지로 1 개의 PDF를 만들고 싶습니다. 각 페이지의 크기는 280.67pt x 595 pt입니다.
먼저 각 입력 페이지에서 왼쪽 섹션을 추출해 보겠습니다.
gswin32c.exe ^
-o left-sections.pdf ^
-sDEVICE=pdfwrite ^
-g2807x5950 ^
-c "<</PageOffset [0 0]>> setpagedevice" ^
-f myflyer.pdf
이 매개 변수는 무엇을 했습니까?
-o ...............:
출력 파일 이름을 지정합니다. 묵시적으로도 사용합니다 -dBATCH -dNOPAUSE -dSAFER
.-sDEVICE=pdfwrite :
우리는 PDF를 출력 형식으로 원합니다.-g................:
출력 미디어 크기를 픽셀 단위로 설정합니다. pdfwrite의 기본 해상도는 720dpi입니다. 따라서 PageOffset과 일치하도록 10을 곱하십시오.-c "..............:
기본 입력 파일 바로 앞에있는 PostScript 코드 스 니펫을 처리하도록 Ghostscript에 요청합니다 (다음에 와야 함 -f
).<</PageOffset ....:
매체에서 페이지 이미지의 이동을 설정합니다. (물론, 왼쪽 페이지의 시프트 [0 0]
는 실제 효과가 없습니다.)-f ...............:
이 입력 파일을 처리하십시오.마지막 명령으로 얻은 결과는 무엇입니까?
이 하나:
Output file: left-sections.pdf, page 1
+--------+ ^
| | |
| 5 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
Output file: left-sections.pdf, page 2
+--------+ ^
| | |
| 2 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
< 280 pt >
이제 가운데 부분에 대해 비슷한 작업을 수행하십시오.
gswin32c.exe ^
-o center-sections.pdf ^
-sDEVICE=pdfwrite ^
-g2807x5950 ^
-c "<</PageOffset [280.67 0]>> setpagedevice" ^
-f myflyer.pdf
결과:
Output file: center-sections.pdf, page 1
+--------+ ^
| | |
| 6 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
Output file: center-sections.pdf, page 2
+--------+ ^
| | |
| 3 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
< 280 pt >
마지막으로 올바른 섹션 :
gswin32c.exe ^
-o right-sections.pdf ^
-sDEVICE=pdfwrite ^
-g2807x5950 ^
-c "<</PageOffset [561.34 0]>> setpagedevice" ^
-f myflyer.pdf
결과:
Output file: right-sections.pdf, page 1
+--------+ ^
| | |
| 1 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
Output file: right-sections.pdf, page 2
+--------+ ^
| | |
| 4 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
< 280 pt >
이제 페이지를 하나의 파일로 결합합니다.
pdftk.exe ^
A=right-sections.pdf ^
B=center-sections.pdf ^
C=left-sections.pdf ^
cat A1 B2 C2 A2 B1 C1 ^
output single-files-input.pdf
verbose
끝난. 원하는 결과는 다음과 같습니다. 크기가 280.67x595 인 6 개의 서로 다른 페이지
결과:
+--------+ +--------+ +--------+ +--------+ +--------+ +--------+ ^
| | | | | | | | | | | | |
| 1 | | 2 | | 3 | | 4 | | 5 | | 6 | |
| | | | | | | | | | | | 595 pt
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
+--------+ +--------+ +--------+ +--------+ +--------+ +--------+ v
< 280 pt > < 280 pt > < 280 pt > < 280 pt > < 280 pt > < 280 pt >
f = open("order.dat","w")
for i in [a+1 for a in xrange(63)]: f.write("A{0} B{0} ".format(i))
f.close()
이렇게하면 "A1 B1 A2 B2 ... A63 B63"으로 order.dat 파일이 생성됩니다 . 그런 다음에 복사하여 붙여 넣을 수 있습니다 pdftk
.
방금 같은 문제가있었습니다. pdf 페이지를 분리하고 자르기위한 오픈 소스 Java GUI 도구 인 briss를 발견했습니다.
http://sourceforge.net/projects/briss/
사용자 인터페이스가 완전히 사소한 것은 아니지만 Linux에서는 매우 잘 작동했습니다. 다른 크기의 페이지가있는 pdf로도 작동했습니다!
@peims, 감사합니다. 방법의 단계별 버전은 다음과 같습니다. Kindle DX로 변환하고 싶은 파일로 시도했는데 완벽하게 작동합니다.
그런 다음 pdftk.exe ( http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/ )를 사용하여 결과를 단일 파일로 인터리브하십시오. "pdftk.exe", "left.pdf"및 "right.pdf"를 "D : \"로 복사하고 다음을 실행하십시오.
참고 : 파일을 "C : \"로 복사하면 보안 권한으로 인해 Win 7에서 작동하지 않습니다. D : \가 없으면 "C : \ x"디렉토리를 작성하여 작업을 완료하십시오.
이 결과는 일반적으로 충분합니다. 그러나 출력을 향상시키기위한 두 가지 선택적 단계가 더 있습니다.
문서를 복제 한 다음 짝수 페이지 번호 만 하나의 파일에 표시되고 홀수 페이지 번호 만 다른 파일에 표시되도록 페이지를자를 수 있습니다. 그런 다음 파일을 단일 페이지로 분할하고 다시 결합하여 한면이있는 문서를 한 페이지로 만듭니다.
여러 가지 방법을 사용하여이를 수행 할 수 있습니다 (예 :
다음 스크립트를 사용하여 Mac 및 Linux에서 스캔 한 책을 처리합니다. 이것은 메모리 집약적 일 수 있습니다.
#!/bin/bash
#
# This script processes scanned books. After scanning the books have been cropped with
# Preview. This does kind of a "soft crop" that we need to make a bit "harder".
#
# The second step is to take each page of the PDF and split this into two two pages,
# because each page of the scanned document actually contains two pages of the book.
#
#
FILE=`mktemp`.pdf
FILE2=`mktemp`.pdf
FILE3=`mktemp`.pdf
echo "Making a temporary copy of the input file."
cp $1 $FILE
#
# Start cropping
#
echo "Cropping the PDF"
# The first regex removes all boxes but CropBox. The second regex renames the CropBox as MediaBox
perl -pi.bak -e 's/\/(Media|Bleed|Art|Trim)Box[\n\l\f\s]*\[(.+?)\]//msg;' $FILE
perl -pi.bak -e 's/CropBox/MediaBox/g;' $FILE
echo "Validating the PDF"
#Run PDFTK to ensure that the file is OK
cat $FILE | pdftk - output $FILE2
#
# Done cropping, start splitting the pages
#
echo "Splitting the pages in two and changing to 200 dpi with imagemagick. Output goes to $FILE3"
convert -density 200 $FILE2 -crop 50%x0 +repage $FILE3
#
# Done spliting, copy the result in a new file
#
mv $FILE3 $1.pages.pdf
훌륭한 참조 주셔서 감사합니다. 나는 비슷한 문제에 있었지만 나를 위해 일한 것을 나누고 싶었다.
가로 방향의 세로 방향 텍스트가 왼쪽에만있는 가로 방향 타블로이드 pdf가 있습니다. 본질적으로 2 개의 타블로이드는 페이지 오른쪽에 내용이 없습니다. 비슷한 시작 지점이지만 타블로이드는 792 × 1224 (세로), 1124 x 792 (가로)이며 필요한 1/2 타블로이드의 포인트 정의는 612 x 792 포인트입니다.
"C:\Program Files\gs\gs9.10\bin\gswin64c.exe" -o left2.pdf -sDEVICE=pdfwrite -g6120x7920 -c "<</PageOffset [0 0]>> setpagedevice" -f "RFP.pdf"
8.5 x 11 세로로 필요한 내용을 훨씬 더 읽기 쉽게 만들었습니다.
Krop (Python) 및 PDFscissors (Java)는 아직 언급되지 않았으므로 올바른 프레젠테이션 PDF로 되돌리려는 pdfnup-ped 강의 노트가 있는지 확인하십시오.