Cách tốt nhất để dọn sạch tệp PDF mà không tăng kích thước tệp một cách ồ ạt


2

Tôi quét rất nhiều ghi chú A4 mà tôi viết lên, nhưng rất nhiều ghi chú cũ của tôi có lỗ hổng chủ yếu trong đó. Một số bản quét này cũng có những khiếm khuyết nhỏ như một chấm nhỏ (bụi bẩn) trên chúng, điều này thực sự làm tôi khó chịu khi tôi đọc qua các bản PDF này.

Tôi đã cố gắng loại bỏ các lỗ dập ghim thông qua tính năng rút gọn vì các lỗ dập ghim luôn ở cùng một khu vực và tôi chỉ có thể áp dụng cùng một độ phân giải cho nhiều trang. Tuy nhiên, điều này có kết quả đáng tiếc là tăng kích thước tệp PDF lên 7 lần!

Tương tự, khi tôi cố gắng loại bỏ các vết bẩn bằng tay bằng cách chỉnh sửa trang PDF bằng sơn, kích thước tệp cũng tăng đáng kể ở mức khoảng 2 MB cho mỗi trang được chỉnh sửa.

Có cách nào tốt hơn để làm những gì tôi đang làm không?

Dưới đây là một ví dụ về một trang PDF như vậy. Trên trang này, tôi muốn loại bỏ một số vết bẩn trên trang thực tế, các lỗ chính ở phía trên bên trái, lỗ đục lỗ ở bên trái và thanh màu đen ở trên cùng bên phải.


Bạn có thể cung cấp một ví dụ về một trong những tệp PDF này và mô tả lỗ hổng bạn muốn xóa cho tệp PDF đó không?
Ouroborus

@Ouroborus Chắc chắn, tôi vừa chỉnh sửa nó vào cuối bài.
Người dùng không thường xuyên

Làm thế nào để bạn chỉnh sửa một tệp PDF trong Paint? Paint chỉ hỗ trợ các định dạng hình ảnh, không phải PDF.
Vịt Donald

@DonaldDuck Đối với tôi, chỉ cần nhấp chuột phải> chỉnh sửa bằng> sơn. Vì đây là các bản quét nên chúng có rất nhiều định dạng hình ảnh với văn bản không thể chỉnh sửa (nếu chữ viết tay đủ gọn gàng thì có thể tìm kiếm ở một mức độ nào đó).
Người dùng bất thường

@IrTHERUser Thông thường, nếu bạn làm điều đó với PDF, Paint nói (file path) Paint can't read this file. This file isn't a valid bitmap file, or its format isn't supported, ngay cả khi chỉ có một hình ảnh trong PDF, đó ít nhất là những gì nó làm với tôi.
Vịt Donald

Câu trả lời:


1

CleanPDF (9 MB)

Tôi đã tập hợp một tập lệnh PowerShell nhỏ có tên CleanPDF để xóa hàng loạt các khu vực nhất định khỏi các trang PDF. Không có chương trình bổ sung cần phải được cài đặt. Đó là một giải pháp di động

Người dùng phải thiết lập một hình ảnh mặt nạ thích hợp để báo cho chương trình những khu vực nào cần được loại bỏ. Sử dụng Paint.net, Gimp, Photoshop hoặc bất cứ điều gì bạn có để chỉnh sửa mask.png và duy trì tính minh bạch


Tập lệnh PowerShell

# user variables
$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Definition
$pdfimages = "$scriptDir\pdfimages.exe"
$convert   = "$scriptDir\convert.exe"
$composite = "$scriptDir\composite.exe"
$mask      = "$scriptDir\mask.png"
$temp      = "$enc:temp\cleanPDF"

# function to remove certain areas from each PDF site according to mask.png
function cleanPDF($file){

    # check if temp folder exists. Maybe from a previous run. If yes, delete it
    if (Test-Path $temp){ Remove-Item $temp -Force -Recurse}

    # Create a new temp folder which is always empty
    New-Item $temp -ItemType Dir | Out-Null

    # Extract one JPG per PDF site and save them in temp folder
    & $pdfimages '-j' $file.FullName "$temp\image"

    # Iterate through each new image and process them
    Get-ChildItem "$temp\image-*.jpg" | foreach { 

        # Remove unwanted areas from current JPG with the help of mask.png. Convert JPG to PNG to preserve transparency
        & $composite -compose dst-out "$mask" $_.Fullname -matte "$temp\$($_.BaseName)_result.png"

        # Convert PNG back to JPG so we can replace transparent with white areas. Without this JPG>PNG>JPG trick they would be black
        & $convert "$temp\$($_.BaseName)_result.png" -background white -alpha remove "$temp\$($_.BaseName)_result.jpg"
    }       

    # combine all images back to a single pdf and append "_result" to the file name
    & $convert "$temp\image*_result.jpg" "$($file.Directory)/$($file.BaseName)_result.pdf"

    # Remove temp folder and work images
    Remove-Item $temp -Force -Recurse
}

# Iterate through each passed commandline argument
ForEach ($path in $args){

    # Get path as Powershell item
    $file = Get-Item $path

    # If file extension is .pdf, start CleanPDF function for this pdf
    If ($file.Extension.ToLower() -eq '.pdf') { cleanPDF $file }
}

Sử dụng các công cụ và kỹ thuật

Kịch bản sử dụng các công cụ của bên thứ ba sau để xử lý các tác vụ khác nhau

  • pdfimages.exe (được cung cấp trong dự án Xpdf ) để trích xuất tất cả các trang PDF dưới dạng hình ảnh riêng biệt. Nhưng tại sao lại sử dụng pdfimages khi fantemagick cũng có khả năng chuyển đổi tập tin PDF thành hình ảnh? Ưu điểm của pdfimages là chúng ta không cần cài đặt GhostScript

    pdfimages.exe -j C:\inputfile.pdf C:\outputfolder  
    
  • composite.exe (được cung cấp trong dự án fantemagick ) để che giấu các khu vực được xác định trước nhất định

    composite.exe -compose dst-out C:\mask.png C:\input1.jpg -matte C:\output2.png 
    
  • convert.exe (được cung cấp trong dự án fantemagick ) để chuyển đổi các vùng trong suốt sang các vùng trắng. Và để kết hợp tất cả các hình ảnh được xử lý trở lại thành một tệp PDF

    convert.exe C:\input2.png -background white -alpha remove C:\output3.jpg
    

    convert.exe C:\input*.jpg C:\output.pdf
    

Cách sử dụng

  1. Tải xuống tệp .zip này và giải nén nó vào một thư mục bạn chọn. Bạn có thể bỏ qua cảnh báo Trang web phía trước chứa các chương trình có hại từ Duyệt web an toàn của Google

    Tệp .zip chứa tất cả các tệp cần thiết, do đó bạn không cần tải xuống gói hình ảnh (155 MB) hoặc gói Xpdf (11 MB)

    CleanPDF.ps1
    convert.exe
    composite.exe
    pdfimages.exe
    mask.png sample.pdf

  2. Mở thư mục sendto của bạn ( Win+ R»shell: sendto) và tạo một lối tắt mới. Đặt tên là CleanPDF và nhập làm vị trí đích theo đường dẫn sau, nhưng thay đổi D:\dirthành thư mục của riêng bạn nơi bạn trích xuất các tệp thành

    C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -file "D:\dir\cleanPDF.ps1"
    
  3. Mở mask.pngvà thay đổi nó theo nhu cầu của bạn. Tất cả các khu vực không trong suốt đánh dấu các khu vực sẽ được loại bỏ (bị che đi). Minh bạch phải được bảo tồn

  4. Nhấp chuột phải vào bất kỳ PDF nào và chọn Gửi đến »CleanPDF . Một bản PDF mới sẽ được tạo ra tại cùng một vị trí

    nhập mô tả hình ảnh ở đây


Các mẫu OP . Lưu ý phần nào hiện đang bị xóa:

sample.pdf (1,35 MB)                sample_result.pdf (1,46 MB)

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây


Điều này có vẻ TUYỆT VỜI. Một điều - bạn có thể tải nó lên một trang web khác không? Tôi gặp nhiều rắc rối với việc tải xuống thậm chí không bắt đầu trong firefox / chrome / tức là ở đó vì một số lý do.
Người dùng không thường xuyên

@IrTHERUser Thay đổi liên kết từ ge.tt đến mega.nz. Vui lòng thử lại
nixda 15/03/2016
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.