Làm cách nào để giữ dấu trang khi sắp xếp lại các trang của tệp PDF bằng các công cụ như pdftk?


12

Tôi đang sử dụng pdftkđể sắp xếp lại các trang của tệp pdf bằng dấu trang / đường viền, nhưng sau đó, tệp đầu ra bị mất dấu của bản gốc.

Lệnh của tôi là pdftk in.pdf cat 1-22 43 23-42 44-end output out.pdf.

Tôi đã tự hỏi làm thế nào tôi có thể giữ dấu trang trong khi sắp xếp lại các trang?

Câu trả lời:


9

Đây là một giải pháp làm việc. Tuy nhiên, bạn sẽ cần phải điều chỉnh nó để phù hợp với nhu cầu của bạn.

Trong ví dụ của tôi, tôi đã xóa trang đầu tiên của PDF và sau đó tôi cần cập nhật dấu trang để trỏ đến vị trí chính xác.

  1. xóa trang 1 khỏi in.pdf:

    pdftk A=in.pdf cat A2-end output temp.pdf
    
  2. tạo tệp in.info từ in.pdf:

    pdftk in.pdf dump_data > in.info
    
  3. in.info cần phải được sửa trong trường hợp của tôi, vì tôi sẽ xóa một trang.

    Vì vậy, tôi cần giảm BookmarkPageNumber xuống một để các dấu trang dẫn đến các trang chính xác.

    Mã php:

    $file = "in.info";
    $data = file_get_contents($file);
    
    foreach (explode("\n", $data) as $row) {
        $tmp = explode(": ", $row);
    
        if ($tmp[0] == "BookmarkPageNumber") {
            if ($tmp[1] != "1") $tmp[1]--;
            echo $tmp[0].": ".$tmp[1]."\n";
        } else {
            echo $row."\n";
        }
    }
    
  4. tạo ra cuối cùng.pdf:

    pdftk temp.pdf update_info in2.info output out.pdf
    

đã thử nghiệm làm việc trên debian bằng pdftk 2.01


1
Làm việc cho tôi quá. Có lẽ bạn có thể thêm một gợi ý về cách thực thi tập lệnh của mình (không biết làm thế nào ...) hoặc thêm tập lệnh python:#!/usr/bin/python output = open('res.info','w') with open('temp.info','r') as f: for line in f: if line.startswith("BookmarkPageNumber"): output.write( "BookmarkPageNumber: "+ str(int(line.split()[1])+1)+"\n") else: output.write(line)
Vser

6

Bạn cần làm pdftk in.pdf dump_data > in.info, sau đó thêm update_infotham số khi tạo out.pdf. Trích dẫn từ man pdftk:

update_info <info data filename | - | PROMPT>

Thay đổi siêu dữ liệu được lưu trữ trong một từ điển Thông tin của một tệp PDF để khớp với tệp dữ liệu đầu vào. Tệp dữ liệu đầu vào sử dụng cú pháp tương tự như đặt ra từ dump_data. Các ký tự không phải ASCII phải được mã hóa dưới dạng các thực thể số XML. Điều này không thay đổi siêu dữ liệu được lưu trữ trong luồng XMP của PDF, nếu nó có. Ví dụ:

             pdftk in.pdf update_info in.info output out.pdf

  update_info_utf8 <info data filename | - | PROMPT>

Tương tự như update_info ngoại trừ đầu vào được mã hóa dưới dạng UTF-8.


Cảm ơn! Làm thế nào để tôi có được tập tin này "in.info"?
Tim

@Tim: đã chỉnh sửa. Tôi hy vọng nó rõ ràng bây giờ. Bạn cần phải sử dụng dump_data_utf8cho update_info_utf8công việc, tất nhiên.
Philomath

3
Cảm ơn! Nó vẫn không hoạt động. Lệnh của tôi là trong ba bước: pdftk in.pdf dump_data > in.info, pdftk in.pdf cat 1-22 43 23-42 44-end output out.pdfpdftk out.pdf update_info in.info output out1.pdfvẫn không có bookmark trong out1.pdf. `
Tim

@Tim Tôi có thể xác nhận rằng điều này thực sự không hoạt động. Bạn đã tìm thấy bất kỳ giải pháp cho điều này bằng bất kỳ cơ hội?
Glutimate

1
Việc truy tìm Google đáng chú ý của tôi cho thấy rằng dấu trang hoàn toàn không được xử lý.
vonbrand

5

Đọc trang man một cách cẩn thận, nó nói rằng update_infolấy dữ liệu ở bất kỳ định dạng nào dump_datatạo ra. Điều đó có lẽ sẽ phải được điều chỉnh theo sự xáo trộn của trang. Nghe có vẻ không thể , nhưng tự động thì không.

Các trang web pdftk chỉ cung cấp cho các hit trên và tạo / chỉnh sửa bookmark như kết quả. Tất cả Google biết về vấn đề đánh dấu trong PDF và sắp xếp lại, là các lần truy cập vào các hoạt động trên và các giải trình trữ tình trên các tuyệt tác họ cung cấp và chủ đề này ;-).

Vì vậy, có vẻ như nó không thể được thực hiện. Các ý kiến ​​cho thấy một số khả năng, không hoạt động khi thử.


1

"pdfmod" là một công cụ đồ họa đơn giản cho phép xóa một hoặc các trang chế độ khỏi tệp PDF hiện có. Nó chỉ là vấn đề của một vài cú nhấp chuột. Nó cũng bảo tồn thông tin nội dung và liên kết chéo trong pdf.

"Pdftk" hoạt động tốt và tôi đã sử dụng nó trong một thời gian dài nhưng tôi đã từng bị mất nội dung sau khi xóa một hoặc hai trang khỏi pdf. Những tệp pdf được kiểm tra trong "pdftk" và "pdfmod" được tạo từ openoffice.

https://apps.fedoraproject.org/packages/pdfmod


pdfmodcó vẻ tốt hơn so với pdftkkhi bảo tồn siêu dữ liệu. Một khác biệt của exiftoolđầu ra cho thấy pdfmodbảo tồn siêu dữ liệu, nhưng pdftkkhông bảo toàn mọi thứ, ngay cả khi bạn sử dụng dump_data_utf8& update_info_utf8.
user1338062
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.