2011-12-12 30 views
9

Có ai biết về việc dán tập tin PDF vào tập tin PDF và cũng có thể điều khiển định vị tập tin PDF?Đóng tập tin PDF có chức năng kiểm soát vị trí của tập tin tem

Tôi có một tệp orginal.pdflogo.pdf. Tôi muốn đóng dấu logo.pdf tệp vào tệp orginal.pdf ở trên cùng bên trái của tệp original.pdf. Làm thế nào nó có thể được thực hiện với Ghostscript hoặc pdftk?

Trả lời

26

Có thể thực hiện với Ghostscript cộng pdftk, nhưng yêu cầu ít nhất 2 bước khác nhau.

AFAIK, bạn không thể trực tiếp kiểm soát vị trí đóng dấu của pdftk. Theo mặc định, nó đặt con dấu ở giữa trang và đồng thời thực hiện thao tác 'tỷ lệ phù hợp'.

Vì vậy, trước tiên bạn phải sửa con dấu của mình để nó được đặt trên một trang trống trước, ngay tại vị trí bạn muốn. Điều này bạn có thể đạt được với sự giúp đỡ của Ghostscript trong bước đầu tiên. Sau đó, trong bước thứ hai, sử dụng pdftk để hợp nhất hai tệp.

Hãy sử dụng ví dụ.

Đầu tiên: Tạo 'stamp-small.pdf'. (. Bạn có bạn đã, tôi cần một để chứng minh nguyên tắc)

gs \ 
    -o stamp-small.pdf \ 
    -sDEVICE=pdfwrite \ 
    -g3200x500 \ 
    -c "/Helvetica-Bold findfont 36 scalefont setfont" \ 
    -c "0 .8 0 0 setcmykcolor" \ 
    -c "12 12 moveto" \ 
    -c "(This is my stamp) show" \ 
    -c "showpage" 

Ví dụ này là dành cho Linux hoặc Mac OS X. Trên Windows bạn sẽ sửa đổi nó như thế này:

gswin32c.exe^
    -o stamp-small.pdf^
    -sDEVICE=pdfwrite^
    -g3200x500^
    -c "/Helvetica-Bold findfont 36 scalefont setfont"^
    -c "0 .8 0 0 setcmykcolor"^
    -c "12 12 moveto"^
    -c "(This is my stamp) show"^
    -c "showpage" 

(Bạn Lệnh đầu tiên này đưa một loạt các câu lệnh PostScript đơn giản tới dòng lệnh của Ghostscript và yêu cầu nó tạo một trang PDF nhỏ với kích thước 320x50. pts. Điều này sẽ mô phỏng con tem 'nhỏ' của bạn mà bạn tìm kiếm vị trí cho.

Thứ hai: Tạo một trang đầy đủ (trong trường hợp của tôi, một khổ A4) tập tin PDF có thể được áp dụng trong bước thứ ba là tem thật:

gs \ 
    -o A4-stamp.pdf \ 
    -sDEVICE=pdfwrite \ 
    -g5950x8420 \ 
    -c "<</PageOffset [280 790]>> setpagedevice" \ 
    -f stamp-small.pdf 

Trên Windows:

gswin32c.exe^
    -o A4-stamp.pdf^
    -sDEVICE=pdfwrite^
    -g5950x8420^
    -c "<</PageOffset [280 790]>> setpagedevice"^
    -f stamp-small.pdf 

lệnh này đạt được một vài điều:

  1. Nó đã bước đầu tạo ra 's tamp-small.pdf 'làm đầu vào.
  2. Nó đã sử dụng canvas có kích thước 595x842 điểm (kích thước trang ISO A4).
  3. Nó áp dụng một lệnh PostScript nhỏ để dịch chuyển nội dung đầu vào 280 pts sang bên phải và 790 điểm đến đầu (tọa độ PostScript và PDF bắt đầu đếm từ góc dưới bên trái).
  4. Nó tạo 'A4-stamp.pdf' làm đầu ra.

Có hiệu lực, chuỗi dấu cỡ nhỏ ban đầu của tôi hiện ở góc trên cùng bên phải của trang A4.

Thứ ba: Bây giờ bạn có thể áp dụng mới 'tem' này đến file PDF gốc của bạn sử dụng pdftk:

pdftk original.pdf stamp A4-stamp.pdf output stamped.pdf 

hay, để dập tắt tất cả các trang của một đa trang gốc PDF:

pdftk original.pdf multistamp A4-stamp.pdf output stamped.pdf 

Ví dụ này sẽ cung cấp cho bạn đủ ý tưởng về cách phát triển quy trình tương tự cho số logo.pdf của riêng bạn như tôi đã làm cho số stamp-small.pdf của mình. (Tôi đã làm nó cho góc trên bên phải, bạn muốn của bạn cho góc trên bên trái.)

+0

Cảm ơn vì u'r Trả lời trước đây. Vấn đề này được thực hiện với kịch bản PHP sử dụng FPDI. –

+3

Không biết tại sao câu trả lời này không được gắn thẻ - nó hoàn toàn giải quyết được vấn đề của tôi về cách đặt tem đáng tin cậy trên trang A4. Giải thích tuyệt vời! – galactica

+1

Vâng, tuyệt vời trả lời, không có đầu mối tại sao OP không có sự chấp nhận. –

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