2009-02-11 92 views
24

Tôi đang tìm một công cụ miễn phí cho phép sắp xếp lại các trang của tài liệu PDF và kết hợp nhiều trang trên mỗi trang tính. Phần đầu tiên (sắp xếp lại) có thể dễ dàng được giải quyết bằng nhiều công cụ (tôi sử dụng PyPDF).Làm cách nào để kết hợp hai trang PDF hiển thị trên cùng một trang?

Vấn đề là với yêu cầu thứ hai: kết hợp hai (hoặc nhiều) trang vào một trang. Ví dụ: lấy hai trang (A và B), xoay chúng, chia tỷ lệ và kết hợp thành một trang như thế này

------  ------   ------ 
|  |  |  |   |  | 
| A |  | B |   | a | 
|  |  |  |   |  | 
|  |  |  | ---> ------ 
|  |  |  |   |  |   
|  |  |  |   | b |   
|  |  |  |   |  |   
------  ------   ------ 

Giải pháp này cần phải hoạt động trên Linux và tốt nhất là trên Windows. Tôi đang tìm kiếm một trong hai ứng dụng giao diện điều khiển hoặc thư viện với Python hoặc Perl bindings.

Sửapdfnup thư viện mà là nghĩa vụ phải thực hiện chính xác loại chuyển đổi, và là nền tảng chéo, tuy nhiên tôi không thể sử dụng nó do một lỗi tương tự như this.

Trả lời

9

Trên Linux, bạn có thể chuyển đổi tệp PDF thành Postscript và sử dụng psnup. Cách chính xác để gọi nó phụ thuộc vào chính xác cách bạn muốn các trang được đặt lại với nhau, cho dù bạn muốn chúng được xoay, kích thước giấy nào bạn muốn sử dụng, v.v ... nhưng nó sẽ giống như sau:

pdf2ps infile.pdf infile.ps 
psnup -2 infile.ps outfile.ps 
ps2pdf outfile.ps outfile.pdf 

Tùy thuộc vào công cụ bạn có sẵn, bạn có thể có cách hiệu quả hơn để làm điều này - psnup chắc chắn không phải là cách duy nhất, nhưng đó là một chương trình tương đối nổi tiếng (trên Linux).

+0

Nếu đó là 'pdf2ps infile.pdf infile.ps'? –

+0

@Ian: Tôi tin rằng bạn nói đúng, cảm ơn vì đã bắt được điều đó;) Tôi sẽ sửa nó. –

0

Kiểm tra mã nguồn của PyPDF, đặc biệt là phương thức rotateClockwise(). Phải có một nơi mà nội dung của một trang được viết. Chèn toán tử "q" (lưu trạng thái) và "cm" (với thông số chính xác cho ma trận tỷ lệ) trước nội dung và toán tử "Q" (trạng thái khôi phục) sau đó.

Xem PDF documentation để được giải thích về toán tử và cấu trúc của trang (cuộn xuống cuối để xem một số liên kết hữu ích).

Đừng quên gửi một bản vá để PyPDF :)

[EDIT] Bạn cũng có thể muốn kiểm tra pdfjam sources trong đó bao gồm một lệnh pdfnup.

0

Đây là một chức năng perl tôi sử dụng để lấy một thư mục đầy đủ các file prn từ một ứng dụng bên thứ 3 và tạo ra một pdf sáp nhập duy nhất.

sub runMerged($) 
{ 
    my($path) = @_; 

    print "Generating merged PDFs for $path\n"; 

    my @files = sort(getFiles($path, ".prn\$")); 
    if (scalar(@files)) 
    { 
     open(MERGE, ">$path/merged.prn"); 
     for (my $i = 0; $i < scalar(@files); $i++) 
     { 
      print MERGE "^L\n" if ($i > 0); 

      open(FN, "$path/" . $files[$i]); 
      while (my $line = <FN>) 
      { 
       print MERGE $line; 
      } 
      close(FN); 
     } 

     chdir("$BASE_PATH/txt2pdf"); 
     print `./txt2pdf.pl $path/merged.prn`; 
    } 
} 
22

Đây là một bản tóm tắt của các công cụ tôi tìm thấy cho PDF (Tôi muốn tìm ra tương đương với psup và psbook)

  • Tạo tập quảng cáo: pdfbook, pdf-công cụ (lệnh: pdfbklt)
  • file PDF Merge: pdfmerge, pdfjam (lệnh: pdfjoin)
  • trang Rotate: pdfjam (lệnh: pdf90)
  • Nhiều trang trên mỗi tờ: pdfjam (lệnh: pdfnup)
  • Tạo áp phích (nhiều sheet mỗi trang): pdfposter

Từ quản lý theo gói:

Tạo một cuốn sách nhỏ A6:

pdfbook -2 -p a5 infile.pdf outfile.pdf 

pdf-công cụ chứa:

  • pdfbklt: tạo tập tài liệu
  • pdfrevert: Loại bỏ một lớp thay đổi vào một tập tin PDF, cố gắng để tối đa hóa kích thước của tệp đầu ra (cho tài khoản cho tệp PDF tuyến tính).
  • pdfstamp: Thêm chuỗi đã cho vào tệp .pdf. Infdf ở vị trí, phông chữ và kích thước đã cho.

Ngoài ra còn có đa hóa trị: http://multivalent.sourceforge.net/Tools/index.html

+0

Nhà mới cho pdfmerge (có vẻ như): https://github.com/dmaphy/pdfmerge – Mildred

+4

Sau khi thử nghiệm một số công cụ, 'pdfjam' là dành cho tôi một cách dứt khoát, đơn giản nhất, nhanh nhất và hiệu quả nhất:' pdfjam * .pdf --nup 2x1 --landscape --outfile output.pdf' (từ: http://superuser.com/a/750293/255048) –

0

I Had một nhu cầu tương tự trong tuần này. Nhưng tôi cần phải lặp lại mỗi trang A4 (phong cảnh) "hai lần" trong tờ A3 (ảnh chân dung), sau đó cắt giảm một nửa.

Tôi đã tìm thấy một Plugin Acrobat với nhiều tính năng áp đặt phù hợp với nhu cầu của tôi và với bản dùng thử 30 ngày đầy đủ chức năng.

Hy vọng Điều này có thể hữu ích cho người khác.
http://www.pdfsnake.com/

1

Trong câu trả lời cho câu hỏi của bạn, bạn sẽ cần một công cụ PDF 'Áp dụng', mà là một cách ưa thích của nói một công cụ để sắp xếp các hình ảnh trang PDF thành một mảng đặc biệt để tạo ra một MỚI trang PDF duy nhất. Hãy tưởng tượng nó giống như sắp xếp một tờ báo. Bạn xác định một mảng các khe một số lượng nhất định các cột rộng, bởi một số lượng nhất định các hàng sâu, trên một trang của một kích thước cố định nhất định (tính bằng cm). Sau đó, bạn điền vào các khoảng trống đó từ trên xuống dưới, từ trái sang phải với các trang từ tệp nguồn pdf. Trong trường hợp OP, họ muốn tạo một trang đơn, gồm hai trang 8.5x11 được sắp xếp trong một mảng 1x2 (1 cột, 2 hàng). Các trang của họ sẽ được đưa vào mảng theo thứ tự sau: 1,2.Vì vậy, bạn đang thả trang đầu tiên (trang 1 của pdf) vào vị trí đầu tiên của mảng (Cột 1, hàng 1) và bạn đang thả trang thứ hai (trang 2) vào vị trí thứ hai (Cột 1, hàng 2).

Cách sử dụng công cụ để thực hiện việc này: Tải xuống phiên bản cũ của Đa ngôn ngữ. Lưu ý tác giả đã xóa các lớp công cụ tốt khỏi ấn bản mới nhất mà không cần giải thích, vì vậy bạn phải sử dụng một lớp cũ hơn. Đây là liên kết hoạt động kể từ ngày 02/12: http://code.google.com/p/pdfsizeopt/downloads/detail?name=Multivalent20060102.jar Để đơn giản, tôi đã đổi tên tệp jar thành m.jar. Không cần phải nói rằng bạn cần phải cài đặt JRE để làm việc này, nhưng tôi sẽ đưa nó ra khỏi đó. Thêm m.jar vào các biến môi trường đường dẫn lớp Java của bạn (để viết kịch bản) hoặc chạy cú pháp dòng lệnh với tùy chọn -cp và đường dẫn tương đối (được hiển thị bên dưới). Lưu ý, tôi chạy nó từ dòng lệnh tại thư mục cài đặt trong ví dụ của tôi dưới đây. Cung cấp đường dẫn tuyệt đối từ gốc khác (như c: \ 1 \ bin \ m.jar).

Dưới đây là ví dụ sẽ thực hiện chính xác những gì OP được đăng về: C: \ 1 \ bin> java -cp m.jar tool.pdf.Impose -dim 1x2 -verbose -papersize "21.59x55.88cm" - bố cục "1,2" yourfilename.pdf

Lưu ý, tùy chọn -dim tạo mảng trong cột x hàng. Các -papersize được xác định bằng cm ở đây, nhưng nếu bạn cần inch, chỉ cần nhân inch bằng 2,54 để có được cm. Tùy chọn -layout cung cấp cho bạn thứ tự bạn muốn lấp đầy các khe trống trong mảng của bạn, điền từ trên xuống dưới và từ trái sang phải. Trong trường hợp này, chúng tôi muốn trang một trong các pdf trên đầu trang và trang hai ở phía dưới, vì vậy đối số của chúng tôi là "1,2". Đối số cuối cùng là tệp nguồn thực sự của bạn. Công cụ sẽ xuất ra một tệp có tên yourfilename-up.pdf khi bạn hoàn thành.

Hy vọng điều đó sẽ hữu ích.

-Matt Zweil

2

Nếu bạn sử dụng Linux, bạn có thể sử dụng BookletImposer cho đặt nhiều trang PDF trên một trang duy nhất.

Đối với người dùng Ubuntu, công cụ này có sẵn tại Trung tâm phần mềm Ubuntu.

0

tôi đã có vấn đề tương tự như bạn và đây là những gì tôi đã làm:

  1. Trích xuất tất cả các trang trong file pdf như một tập tin riêng biệt mỗi
  2. Trong IrfanView (với các plugin) Tôi tạo ra một Vertical "Panoramic" hình ảnh
  3. kéo file pdf qua đến phần hình ảnh
  4. được Nhấp chuột tạo
  5. các "hình ảnh" được tạo ra với tất cả các trang sau nhau như một hình ảnh dọc rất dài
  6. Bạn có thể xuất sang PDF với hầu như không bị mất chất lượng.
  7. Thưởng thức
0

Dưới đây là một kịch bản cho lặp đi lặp lại các trang (như A5, cảnh quan) hai lần trên một tờ gấp đôi kích thước này (A4, chân dung):

#!/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` 
OUTPUT1=`basename ${INPUTFILE} .pdf`.dup.pdf 
OUTPUT2=`basename ${INPUTFILE} .pdf`.double.pdf 
pdftk ${INPUTFILE} cat ${DUPAGES} output ${OUTPUT1} 
pdfjam --nup 1x2 ${OUTPUT1} --outfile ${OUTPUT2} 

Nó không thực sự thanh lịch; nó có thể được thực hiện mà không có cuộc gọi pdftk thứ hai, và nó không hoạt động với các tệp có chứa dấu cách. Nhưng nó hoạt động với nhiều trang pdf.

0

Sử dụng Adobe Acrobat XI Pro, mở tài liệu thứ nhất. Chỉnh sửa, chọn "chụp nhanh", sau đó nhấp vào góc trên cùng của nội dung bạn muốn sao chép và kéo đến góc đối diện. Có một tờ giấy sạch mở trong Paint. Nhấp vào để làm sạch trang tính trong sơn và điều khiển V để dán tài liệu thứ nhất vào bảng sạch. Lặp lại cho mục thứ 2 mà bạn muốn kết hợp trên cùng một trang ngoại trừ vị trí mục thứ 2 THEO mục 1 tạm thời trong bảng Sơn của bạn. Sau đó kéo mục thứ 2 để định vị nó ở nơi bạn cần trong Bảng Sơn. Lưu tập tin bản vẽ và bạn đã hoàn tất!

+1

Adobe Acrobat XI Pro không phải là một công cụ miễn phí, phải không? Đó là những gì OP yêu cầu. – mzjn

+0

Chúng tôi thường không đưa con người vào chương trình của chúng tôi tại đây. (không phải câu hỏi là chủ đề, dù sao) –

Các vấn đề liên quan