PDF 문서의 크기를 조정하고 DPI를 변경하는 GUI 프로그램


12

LibreOffice Draw에서 PDF를 열고 품질 및 DPI 해상도를 변경하는 옵션과 함께 내보낼 수 있어야합니다. 그러나이 응용 프로그램에서 고해상도 스캔 한 pdf가 제대로 열리지 않아 (첫 페이지 만 가져 오기)보다 전문적인 응용 프로그램을 찾고 싶습니다.

이 시점에서 명령 줄 옵션을 요구하지 않습니다 (내 PDF는 너무 커서이 방법으로 시도한 모든 것이 실패했습니다).

답변:


12

노틸러스 스크립트


암호

이 노틸러스 스크립트를 사용하여 PDF의 크기를 성공적으로 조정할 수있었습니다.

#! /bin/bash

# AUTHOR:   (c) Ricardo Ferreira, oriolpont -- modified in accordance to /ubuntu//q/280618/81372
# NAME:     Compress PDF 1.4.2
# DESCRIPTION:  A nice Nautilus script with a GUI to compress and optimize PDF files
# REQUIRES: ghostscript, poppler-utils, zenity, sed, python-notify (optional)
# LICENSE:  GNU GPL v3 (http://www.gnu.org/licenses/gpl.html)
# WEBSITE:  https://launchpad.net/compress-pdf

VERSION="1.4.2"
COMPRESSPDF_BATCH_ABORT_ERR=115

# Messages
        # English (en-US)
        error_nofiles="No file selected."
        error_noquality="No optimization level selected."
        error_ghostscript="PDF Compress requires the ghostscript package, which is not installed. Please install it and try again."
        error_nopdf="At least one of the selected file(s) is not a valid PDF archive."
        label_filename="Save PDF as..."
        label_level="Please choose an optimization level below."
        optimization_level="Optimization Level"
        level_default="Default" # apparently close to High Quality
        level_screen="Screen-view only (72dpi)"
        level_low="Low Quality (150dpi)"
        level_high="High Quality (300dpi)"
        level_color="High Quality (Color Preserving) (300dpi)"
        job_done="has been successfully compressed"
        filename_suffix="_opt"
        label_suffix="Choose the suffix for the filenames."
        warning_overwrite="That will overwrite the original pdf files."


case $LANG in

    pt* )
        # Portuguese (pt-PT)
        error_nofiles="Nenhum ficheiro seleccionado."
        error_noquality="Nenhum nível de optimização escolhido."
        error_ghostscript="O PDF Compress necessita do pacote ghostscript, que não está instalado. Por favor instale-o e tente novamente."
        error_nopdf="O ficheiro seleccionado não é um ficheiro PDF válido."
        label_filename="Guardar PDF como..."
        label_level="Por favor escolha um nível de optimização abaixo."
        optimization_level="Nível de Optimização"
        level_default="Normal"
        level_screen="Visualização no Ecrã"
        level_low="Baixa Qualidade"
        level_high="Alta Qualidade"
        level_color="Alta Qualidade (Preservação de Cores)"
        job_done="foi comprimido com sucesso"
        filename_suffix="-otimizado";;


    es* )
        # Spanish (es-AR) by Eduardo Battaglia
        error_nofiles="Ningún archivo seleccionado."
        error_noquality="Ningún nivel de optimización escogido."
        error_ghostscript="Compress PDF necesita el paquete ghostscript, que no está instalado. Por favor instálelo e intente nuevamente."
        label_filename="Guardar PDF como..."
        label_level="Por favor escoja un nivel de optimización debajo."
        optimization_level="Nivel de Optimización"
        level_default="Normal"
        level_screen="Sólo visualización"
        level_low="Baja calidad"
        level_high="Alta calidad"
        level_color="Alta calidad (Preservación de Colores)"
        filename_suffix="-optimizado";;


    cs*)
       # Czech (cz-CZ) by Martin Pavlík
        error_nofiles="Nebyl vybrán žádný soubor."
        error_noquality="Nebyla zvolena úroveň optimalizace."
        error_ghostscript="PDF Compress vyžaduje balíček ghostscript, který není nainstalován. Nainstalujte jej prosím a opakujte akci."
        label_filename="Uložit PDF jako..."
        label_level="Prosím vyberte úroveň optimalizace z níže uvedených."
        optimization_level="Úroveň optimalizace"
        level_default="Výchozí"
        level_screen="Pouze pro čtení na obrazovce"
        level_low="Nízká kvalita"
        level_high="Vysoká kvalita"
        level_color="Vysoká kvalita (se zachováním barev)"
        filename_suffix="-optimalizované";;


    fr*)
       # French (fr-FR) by Astromb
        error_nofiles="Aucun fichier sélectionné"
        error_noquality="Aucun niveau d'optimisation sélectionné"
        error_ghostscript="PDF Compress a besoin du paquet ghostscript, mais il n'est pas installé. Merci de l'installer et d'essayer à nouveau."
        error_nopdf="Le fichier que vous avez sélectionné n'est pas un PDF valide."
        label_filename="Sauvegarder le PDF sous..."
        label_level="Merci de choisir, ci-dessous, un niveau d'optimisation."
        optimization_level="Niveau d'optimisation"
        level_default="Défaut"
        level_screen="Affichage à l'écran"
        level_low="Basse qualité"
        level_high="Haute qualité"
        level_color="Haute qualité (Couleurs préservées)"
        filename_suffix="-optimisé";;


    zh_CN*)
        # Simplified Chinese (zh_CN) by TualatriX Chou
        error_nofiles="没有选择文件。"
        error_noquality="没有优化优化等级。"
        error_ghostscript="PDF压缩需要ghostscript软件包,但是它没有安装。请先安装然后再重试。"
        error_nopdf="选择的文件不是一个有效的PDF文件"
        label_filename="另存为PDF..."
        label_level="请在下面选择优化等级"
        optimization_level="优化等级"
        level_default="默认"
        level_screen="仅在屏幕上浏览"
        level_low="低品质"
        level_high="高品质"
        level_color="高品质(护色) "
        filename_suffix="-优化";;


        ar*)
                # Arabic (ar) by Mohammed hasan Taha
        error_nofiles="لم يتم اختيار ملف"
        error_noquality="لم يتم اختيار درجة الضغط"
        error_ghostscript="هذا السكربت يحتاج حزمة ghostscript package لذا يرجى تنصيبها ثم اعادة المحاولة"
        error_nopdf="الملف الذي تم اختياره ليس ملف pdf صالح"
        label_filename="حفظ الملف باسم"
        label_level="الرجاء اختيار درجة الضغط"
        optimization_level="درجة الضغط"
        level_default="افتراضي"
        level_screen="عرض للشاشة فقط(الدرجة الأكثر انخفاضا)"
        level_low="جودة منخفضة"
        level_high="جودة مرتفعة"
        level_color="جودة عالية جدا"
        filename_suffix="-الأمثل";;


    ml_IN*)
        # Malayalam (ml_IN) by Hrishikesh K B
        error_nofiles="ഒരു ഫയലും തിരഞ്ഞെടുത്തിട്ടില്ല."
        error_noquality="യാതൊരു ഒപ്റ്റിമൈസേഷന്‍ ലെവലും തിരഞ്ഞെടുത്തിട്ടില്ല."
        error_ghostscript="പി ഡി എഫ് കംപ്രസ്സറിന് ഗോസ്റ്റ് സ്ക്രിപ്റ്റ് പാക്കേജ് ആവശ്യമാണ്. ആ പാക്കേജ് ഇന്‍സ്റ്റാള്‍ ചെയ്‌‌ത ശേഷം ദയവായി വീണ്ടും ശ്രമിക്കുക."
        error_nopdf="തിരഞ്ഞെടുത്ത ഫയല്‍ സാധുവായ ഒരു പിഡിഎഫ് ആര്‍ച്ചീവ് അല്ല."
        label_filename="പിഡിഎഫ് ഇങ്ങിനെ സംരക്ഷിക്കുക..."
        label_level="ദയവായി താഴെ നിന്നും ഒരു ഒപ്റ്റിമൈസേഷന്‍ ലെവല്‍ തിരഞ്ഞെടുക്കുക."
        optimization_level="ഒപ്റ്റിമൈസേഷന്‍ ലെവല്‍ "
        level_default="ഡീഫാള്‍ട്ട്"
        level_screen="സ്ക്രീനില്‍ കാണാന്‍ മാത്രം "
        level_low="കുറഞ്ഞ നിലവാരം"
        level_high="കൂടിയ നിലവാരം "
        level_color="കൂടിയ നിലവാരം (നിറം സംരക്ഷിച്ചിട്ടുള്ളത്)";;


    he*)
        # Hebrew (he-IL) by Yaron (from Launchpad question)
        error_nofiles="לא נבחר אף קובץ."
        error_noquality="לא נבחרה רמת הייעול."
        error_ghostscript="התכנית PDF Compress דורשת את החבילה ghostscript, שאינה מותקנת. נא להתקין אותה ולנסות שוב."
        error_nopdf="הקובץ הנבחר אינו ארכיון PDF תקני."
        label_filename="שמירת ה־ PDF בשם..."
        label_level="נא לבחור את רמת הייעול להלן."
        optimization_level="רמת הייעול"
        level_default="בררת מחדל"
        level_screen="לצפייה בצג בלבד"
        level_low="איכות נמוכה"
        level_high="איכות גבוהה"
        level_color="איכות גבוהה (שימור הצבע)"
        job_done="הדחיסה הסתיימה בהצלחה";;

esac



# Check if Zenity is installed
if ! ZENITY=$(which zenity)
then
    echo "error: Compress PDF $VERSION needs zenity to run." # maybe we could translate this someday
    exit 1
fi

# Check if Ghostscript is installed
if ! GS=$(which gs)
then
    $ZENITY --error --title="Compress PDF $VERSION" --text="$error_ghostscript"
    exit 1
fi

# Check if the user has selected any files
# if [ "x$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" = "x"  -o  "$#" = "0" ] # we double check. Remove the first part if you plan to manually invoke the script

if [ "$#" = "0" ] # removed nautilus specific variable to make the script compatible with other file managers
then
    $ZENITY --error --title="Compress PDF $VERSION" --text="$error_nofiles"
    exit 1
fi

# Check if we can properly parse the arguments
INPUT=("$@")
N=("$#")
if [ "${#INPUT[@]}" != "$N" ] # comparing the number of arguments the script is given with what it can count
then
    $ZENITY --error --title="Compress PDF $VERSION" # if we arrive here, there is something very messed
    exit 1
fi

# Check if all the arguments are proper PDF files
for ARG in "$@"
do
    IS_PDF=$(file --brief --mime-type "$ARG" | grep -i "/pdf") # ignoring case for 'pdf'; as far as I know, the slash before (sth/pdf) is universal mimetype output. In most cases we can even expect 'application/pdf' (portability issues?).
    if [ "x$IS_PDF" = x ]; then NOT_PDF=1; break; fi
done
if [ "x$NOT_PDF" != x ]
then
    $ZENITY --error --title="Compress PDF $VERSION" --text="$error_nopdf"
    exit 1
fi



# Everything is OK. We can go on.



# Ask the user to select an output format
selected_level=$($ZENITY --list --title="Compress PDF "$VERSION"" --text "$label_level" --radiolist --column "" --column "$optimization_level" TRUE "$level_default" FALSE "$level_screen" FALSE "$level_low" FALSE "$level_high" FALSE "$level_color" --height 250 --width 400)
if [ "$?" != "0"  -o  "x$selected_level" = x ]; then exit 1; fi

# Select the optimization level to use
case $selected_level in
    "$level_default")
        COMP_COMMAND="/default"
    ;;
    "$level_screen")
        COMP_COMMAND="/screen"
    ;;
    "$level_low")
        COMP_COMMAND="/ebook"
    ;;
    "$level_high")
        COMP_COMMAND="/printer"
    ;;
    "$level_color")
        COMP_COMMAND="/prepress"
    ;;
esac



# Choose output filename(s)
if [ $# -eq 1 ]
then
    pdf_file=$(basename "$1")
    suggested_filename=${pdf_file%.*}${filename_suffix}.${pdf_file##*.}
    output_filename=$($ZENITY --file-selection --save --confirm-overwrite --filename="$PWD/$suggested_filename" --title="$label_filename")
    if [ "$?" != "0"  -o  "x$output_filename" = x ]; then exit 1; fi
else
    filename_suffix=$($ZENITY --entry --title="Compress PDF $VERSION" --text="$label_suffix" --entry-text="$filename_suffix")
    if [ "$?" != "0" ]; then exit 1; fi
    if [ "x$filename_suffix" = x ]
        then if ! $ZENITY --warning --title="Compress PDF $VERSION" --text="$warning_overwrite"; then exit 1; fi
    fi
    case "$filename_suffix" in */*) $ZENITY --error --title="Compress PDF $VERSION"; exit 1; esac # Check if the specified suffix is legal (we use 'case' instead of 'if' to directly use asterisk * globbing -- and avoid [[...]] for portability)
fi



# Finally, we process the files



for arg in "$@" # this processing is partly inspired by Edouard Saintesprit's patch from Compress PDF page at Launchpad
do
    if [ $# -ne 1 ]
    then
        pdf_file=$(basename "$arg")
        output_filename=${pdf_file%.*}${filename_suffix}.${pdf_file##*.}
    fi

    output_name=$(basename "$output_filename")

    temp_pdfmarks=tmp-compresspdf-$output_name-pdfmarks
    temp_filename=tmp-compresspdf-$output_name

    if [ -e $temp_pdfmarks  -o  -e $temp_filename ]; then $ZENITY --error --title="Compress PDF $VERSION"; exit 1; fi

    # Extract metadata from the original PDF. This is not a crucial functionality, but maybe we could warn if pdfinfo or sed are not available
    pdfinfo "$arg" | sed -e 's/^ *//;s/ *$//;s/ \{1,\}/ /g' -e 's/^/  \//' -e '/CreationDate/,$d' -e 's/$/)/' -e 's/: / (/' > "$temp_pdfmarks"
    if ! grep /Title "$temp_pdfmarks"; then echo '  /Title ()' >> "$temp_pdfmarks"; fi # Warning: if the pdf has not defined a Title:, ghostscript makes a fontname become the title.
    # echo -e 0a'\n''  /Title ()''\n'.'\n'w | ed afile # use to prepend instead of append
    sed -i '1s/^ /[/' "$temp_pdfmarks"
    sed -i '/:)$/d' "$temp_pdfmarks"
    echo "  /DOCINFO pdfmark" >> "$temp_pdfmarks"

    # Execute ghostscript while showing a progress bar
    (
        $GS -sDEVICE=pdfwrite -dPDFSETTINGS=$COMP_COMMAND -dColorConversionStrategy=/LeaveColorUnchanged -dCompatibilityLevel=1.4 -dNOPAUSE -dQUIET -dBATCH -dSAFER -sOutputFile="$temp_filename" "$arg" "$temp_pdfmarks" & echo -e "$!\n"
        # we output the pid so that it passes the pipe; the explicit linefeed starts the zenity progressbar pulsation
    ) | ( # the pipes create implicit subshells; marking them explicitly
        read PIPED_PID
        if $ZENITY --progress --pulsate --auto-close --title="Compress PDF $VERSION"
        then
            rm "$temp_pdfmarks"
            mv -f "$temp_filename" "$output_filename" & # we go on to the next file as fast as possible (this subprocess survives the end of the script, so it is even safer)
            notify-send "Compress PDF" "$output_name $job_done"
        else
            kill $PIPED_PID
            rm "$temp_pdfmarks"
            rm "$temp_filename"
            exit $COMPRESSPDF_BATCH_ABORT_ERR # Warning: it exits the subshell but not the script
        fi
    )
    if [ "$?" = "$COMPRESSPDF_BATCH_ABORT_ERR" ]; then break; fi # to break the loop in case we abort (zenity fails)
done

원본 출처 : https://launchpad.net/compress-pdf

oriolpont 가이 브랜치를 기반으로 하고 cipricus의 제안 에 따라 수정 된 스크립트 .

Oriolpont의 수정 된 개정판에는 다음과 같은 여러 가지 개선 사항이 있습니다.

  • 야론의 히브리어 번역
  • Edouard Saintesprit의 변경 사항에 따른 다중 파일 지원
  • 스크립트를 더욱 안전하게하기위한 몇 가지 다른 bash 조정 (PID 임시 파일, GS를위한 더 안전한 모드, 더 많은 초기 검사)

스크린 샷

압박 붕대


옵션

zenity GUI 대화 상자에서 제공되는 옵션은 다음 ghostscript설정에 해당합니다 .

  • dPDFSETTINGS=/screen (화면보기 전용 품질, 72dpi 이미지)
  • dPDFSETTINGS=/ebook (낮은 품질, 150dpi 이미지)
  • dPDFSETTINGS=/printer (고품질, 300dpi 이미지)
  • dPDFSETTINGS=/prepress (고품질, 색상 보존, 300dpi imgs)
  • dPDFSETTINGS=/default (/ screen과 거의 동일)

사이트에서 더 많은 옵션과 미세 조정 : http://milan.kupcevic.net/ghostscript-ps-pdf/

소스 : PDF 최적화를위한 오픈 소스 명령 줄 도구

여기에서 사용 된 옵션에 대한 추가 정보를 찾을 수 있습니다 . Oriolpont의 README 는 필요에 따라 스크립트를 사용자 정의하는 데 대한 추가 세부 사항을 제공합니다.


설치

스크립트는 여러 패키지에 따라 다릅니다. 다음과 같이 설치할 수 있습니다.

sudo apt-get install ghostscript poppler-utils zenity

노틸러스 스크립트를 설치하는 방법을 모르는 경우 다음 가이드를 따르십시오.

노틸러스 스크립트는 어떻게 설치합니까?


대체 데스크탑 환경에 설치

이 스크립트는 사용자 정의 노틸러스 변수에 의존하지 않으며 사용자 정의 메뉴 작업을 지원하는 거의 모든 파일 관리자와 함께 사용할 수 있습니다. 스크립트 설치 방법은 파일 관리자 설명서를 참조하십시오. XFCE 사용자는 여기 에서 멋진 튜토리얼을 찾을 수 있습니다 .

물론 명령 줄에서 스크립트를 시작할 수도 있습니다. 기본 사용법 :

compresspdf "filename.pdf"

문 샤이 너


개요

고스트 스크립트의 GUI 프론트 엔드 인 Moonshiner 를 사용하면 PDF 출력을보다 고급으로 제어 할 수 있습니다 .


설치

Moonshiner는 공식 리포지토리에서 사용할 수 없습니다. 불행히도 나는 공식적인 PPA를 찾을 수 없었다. 한동안 업데이트되지 않은이 개인 PPA 만 있습니다 . 이 .deb가능한 아카이브 여기에 최근 우분투 버전에서 작동해야하지만, 내 말을하지 않습니다.

내가 볼 수있는 한 moonshiner를 설치하는 가장 안전한 방법은 소스에서 직접입니다. 이렇게하려면 먼저 최신 개정판을 다운로드하십시오.

svn co https://moonshiner.svn.sourceforge.net/svnroot/moonshiner/trunk moonshiner_svn
cd $HOME/moonshiner_svn/

Moonshiner는 Python, PyGTK 및 Ghostscript에 의존합니다. 이러한 종속성이 만족되면 (주식 우분투 설치에 있어야 함) 다음을 사용하여 응용 프로그램을 계속 설치할 수 있습니다.

sudo python setup.py install

또는 Python의 패킷 관리 도구 ( sudo apt-get install python-pip)를 사용하십시오.

python setup.py sdist
sudo pip install $HOME/moonshiner_svn/dist/moonshiner-1.1svn.tar.gz

moonshiner 제거는 다음과 pip같이 쉽습니다 .

sudo pip uninstall moonshiner

첫 번째 설치 방법을 사용하면 설치된 모든 파일을 수동으로 제거해야합니다.


용법

설치 후 대시 또는 선호하는 응용 프로그램 실행기에서 Moonshiner를 시작할 수 있습니다. GUI는 설명이 필요 없습니다. PDF를 수정하려면 파일을 인터페이스로 끌어다 놓기 만하면 원하는 설정을 변경하고 Go Moonshining! .

이미지 탭 아래에있는 3 개의 개별 조정기를 사용하면 DPI 및 품질 설정을 원하는대로 조정할 수 있습니다.

http://i.imgur.com/Y5ziLnu.gif

다른 설정에 대해서는 다루지 않겠지 만 궁금한 점이 있으면 공식 문서 를 참조하십시오 .


맞춤 아이콘

나는 moonshiner의 아이콘을 너무 좋아하지 않았기 때문에 내 자신의 아이콘 중 하나를 만들었습니다.

SVG는 여기에서 다운로드 할 수 있습니다 . 이 아이콘은 환상적인 Faenza 아이콘 세트를 기반으로 하며 동일한 라이센스 (GNU / GPL)로 출시되었습니다.


(1) 달빛은 위대하다. 사실 : (2) 나는 오류의 원인 발견 스크립트가하는 Xfce /하는 Thunar에서 실행되도록 조정 필요 ( askubuntu.com/a/280623/47206 ) : (150)로 대체해야하는 줄을 : if [ -z "$pdf_file" ]; then. 해당 정보를 답변에 추가해야합니까 아니면 선호합니까?

여기에 수정 된 스크립트 : pastebin.com/eEWHCwK7

@cipricus 나는 그 노틸러스 참조를 간과했습니다. 감사합니다! 여러 파일을 지원하는 스크립트의 업데이트 된 개정판을 찾고 제안과 새 스크립트를 모두 포함하도록 답변을 편집했습니다.
Glutanimate

1
@cipricus 하나의 마지막 업데이트. 나는 못생긴 아이콘이 싫어서 moonshiner를위한 새로운 아이콘을 만들었습니다. 꼭 확인하십시오!
Glutanimate

대단한 답변입니다! 그러나 답변을 Nautlius-Script와 Moonshiner에 대한 두 가지 답변으로 나누는 것이 좋습니다. Esp. 마지막은 훌륭합니다!
math

0

고스트 스크립트 명령 줄

간단합니다 :

ps2pdf "argument.pdf"

argument.pdf.pdf원본 파일보다 (대부분의 경우) 작은 파일 인을 생성 합니다.

니모 스크립트

텍스트 편집기를 열고 다음을 작성하십시오.

ps2pdf "$*"

직관적 인 이름으로 /home/youruser/.local/share/nemo/scripts에 저장하십시오. "PDF 크기 줄이기"라고 말하십시오. 파일 확장자를 사용할 필요가 없습니다.

그런 다음을 적용하십시오 chmod +x "reduce PDF size".

따라서 Nemo를 열고 파일로 이동 한 다음 PDF 파일을 마우스 오른쪽 버튼으로 클릭하고 스크립트를 선택한 다음 "PDF 크기 줄이기"만하면됩니다.

부작용 : 삼바 공유를 인식하지 못해 새로운 손상된 파일을 생성합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.