페이지 범위-노틸러스 스크립트
개요
@ThiagoPonte에 연결된 자습서를 기반으로 약간 더 고급 스크립트를 만들었습니다. 주요 특징은
- GUI 기반이라는 것을
- 파일 이름의 공백과 호환 가능
- 원본 파일의 모든 속성을 보존 할 수있는 세 가지 다른 백엔드를 기반으로합니다.
스크린 샷
암호
#!/bin/bash
#
# TITLE: PDFextract
#
# AUTHOR: (c) 2013-2015 Glutanimate (https://github.com/Glutanimate)
#
# VERSION: 0.2
#
# LICENSE: GNU GPL v3 (http://www.gnu.org/licenses/gpl.html)
#
# OVERVIEW: PDFextract is a simple PDF extraction script based on Ghostscript/qpdf/cpdf.
# It provides a simple way to extract a page range from a PDF document and is meant
# to be used as a file manager script/addon (e.g. Nautilus script).
#
# FEATURES: - simple GUI based on YAD, an advanced Zenity fork.
# - preserves _all_ attributes of your original PDF file and does not compress
# embedded images further than they are.
# - can choose from three different backends: ghostscript, qpdf, cpdf
#
# DEPENDENCIES: ghostscript/qpdf/cpdf poppler-utils yad libnotify-bin
#
# You need to install at least one of the three backends supported by this script.
#
# - ghostscript, qpdf, poppler-utils, and libnotify-bin are available via
# the standard Ubuntu repositories
# - cpdf is a commercial CLI PDF toolkit that is free for personal use.
# It can be downloaded here: https://github.com/coherentgraphics/cpdf-binaries
# - yad can be installed from the webupd8 PPA with the following command:
# sudo add-apt-repository ppa:webupd8team/y-ppa-manager && apt-get update && apt-get install yad
#
# NOTES: Here is a quick comparison of the advantages and disadvantages of each backend:
#
# speed metadata preservation content preservation license
# ghostscript: -- ++ ++ open-source
# cpdf: - ++ ++ proprietary
# qpdf: ++ + ++ open-source
#
# Results might vary depending on the document and the version of the tool in question.
#
# INSTALLATION: https://askubuntu.com/a/236415
#
# This script was inspired by Kurt Pfeifle's PDF extraction script
# (http://www.linuxjournal.com/content/tech-tip-extract-pages-pdf)
#
# Originally posted on askubuntu
# (https://askubuntu.com/a/282453)
# Variables
DOCUMENT="$1"
BACKENDSELECTION="^qpdf!ghostscript!cpdf"
# Functions
check_input(){
if [[ -z "$1" ]]; then
notify "Error: No input file selected."
exit 1
elif [[ ! "$(file -ib "$1")" == *application/pdf* ]]; then
notify "Error: Not a valid PDF file."
exit 1
fi
}
check_deps () {
for i in "$@"; do
type "$i" > /dev/null 2>&1
if [[ "$?" != "0" ]]; then
MissingDeps+="$i"
fi
done
}
ghostscriptextract(){
gs -dFirstPage="$STARTPAGE "-dLastPage="$STOPPAGE" -sOutputFile="$OUTFILE" -dSAFER -dNOPAUSE -dBATCH -dPDFSETTING=/default -sDEVICE=pdfwrite -dCompressFonts=true -c \
".setpdfwrite << /EncodeColorImages true /DownsampleMonoImages false /SubsetFonts true /ASCII85EncodePages false /DefaultRenderingIntent /Default /ColorConversionStrategy \
/LeaveColorUnchanged /MonoImageDownsampleThreshold 1.5 /ColorACSImageDict << /VSamples [ 1 1 1 1 ] /HSamples [ 1 1 1 1 ] /QFactor 0.4 /Blend 1 >> /GrayACSImageDict \
<< /VSamples [ 1 1 1 1 ] /HSamples [ 1 1 1 1 ] /QFactor 0.4 /Blend 1 >> /PreserveOverprintSettings false /MonoImageResolution 300 /MonoImageFilter /FlateEncode \
/GrayImageResolution 300 /LockDistillerParams false /EncodeGrayImages true /MaxSubsetPCT 100 /GrayImageDict << /VSamples [ 1 1 1 1 ] /HSamples [ 1 1 1 1 ] /QFactor \
0.4 /Blend 1 >> /ColorImageFilter /FlateEncode /EmbedAllFonts true /UCRandBGInfo /Remove /AutoRotatePages /PageByPage /ColorImageResolution 300 /ColorImageDict << \
/VSamples [ 1 1 1 1 ] /HSamples [ 1 1 1 1 ] /QFactor 0.4 /Blend 1 >> /CompatibilityLevel 1.7 /EncodeMonoImages true /GrayImageDownsampleThreshold 1.5 \
/AutoFilterGrayImages false /GrayImageFilter /FlateEncode /DownsampleGrayImages false /AutoFilterColorImages false /DownsampleColorImages false /CompressPages true \
/ColorImageDownsampleThreshold 1.5 /PreserveHalftoneInfo false >> setdistillerparams" -f "$DOCUMENT"
}
cpdfextract(){
cpdf "$DOCUMENT" "$STARTPAGE-$STOPPAGE" -o "$OUTFILE"
}
qpdfextract(){
qpdf --linearize "$DOCUMENT" --pages "$DOCUMENT" "$STARTPAGE-$STOPPAGE" -- "$OUTFILE"
echo "$OUTFILE"
return 0 # even benign qpdf warnings produce error codes, so we suppress them
}
notify(){
echo "$1"
notify-send -i application-pdf "PDFextract" "$1"
}
dialog_warning(){
echo "$1"
yad --center --image dialog-warning \
--title "PDFExtract Warning" \
--text "$1" \
--button="Try again:0" \
--button="Exit:1"
[[ "$?" != "0" ]] && exit 0
}
dialog_settings(){
PAGECOUNT=$(pdfinfo "$DOCUMENT" | grep Pages | sed 's/[^0-9]*//') #determine page count
SETTINGS=($(\
yad --form --width 300 --center \
--window-icon application-pdf --image application-pdf \
--separator=" " --title="PDFextract"\
--text "Please choose the page range and backend"\
--field="Start:NUM" 1[!1..$PAGECOUNT[!1]] --field="End:NUM" $PAGECOUNT[!1..$PAGECOUNT[!1]] \
--field="Backend":CB "$BACKENDSELECTION" \
--button="gtk-ok:0" --button="gtk-cancel:1"\
))
SETTINGSRET="$?"
[[ "$SETTINGSRET" != "0" ]] && exit 1
STARTPAGE=$(printf %.0f ${SETTINGS[0]}) #round numbers and store array in variables
STOPPAGE=$(printf %.0f ${SETTINGS[1]})
BACKEND="${SETTINGS[2]}"
EXTRACTOR="${BACKEND}extract"
check_deps "$BACKEND"
if [[ -n "$MissingDeps" ]]; then
dialog_warning "Error, missing dependency: $MissingDeps"
unset MissingDeps
dialog_settings
return
fi
if [[ "$STARTPAGE" -gt "$STOPPAGE" ]]; then
dialog_warning "<b> Start page higher than stop page. </b>"
dialog_settings
return
fi
OUTFILE="${DOCUMENT%.pdf} (p${STARTPAGE}-p${STOPPAGE}).pdf"
}
extract_pages(){
$EXTRACTOR
EXTRACTORRET="$?"
if [[ "$EXTRACTORRET" = "0" ]]; then
notify "Pages $STARTPAGE to $STOPPAGE succesfully extracted."
else
notify "There has been an error. Please check the CLI output."
fi
}
# Main
check_input "$1"
dialog_settings
extract_pages
설치
노틸러스 스크립트에 대한 일반 설치 지침을 따르십시오 . 스크립트의 설치 및 사용법을 명확히하는 데 도움이되므로 스크립트 헤더를주의해서 읽으십시오.
부분 페이지-PDF Shuffler
개요
PDF-Shuffler는 작은 python-gtk 응용 프로그램으로, 대화식의 직관적 인 그래픽 인터페이스를 사용하여 PDF 문서를 병합 또는 분할하고 페이지를 회전, 자르기 및 재 배열 할 수 있습니다. python-pyPdf의 프론트 엔드입니다.
설치
sudo apt-get install pdfshuffler
용법
PDF-Shuffler는 단일 PDF 페이지를 자르고 삭제할 수 있습니다. 자르기 기능을 사용하여 문서 또는 부분 페이지에서 페이지 범위를 추출하는 데 사용할 수 있습니다.
페이지 요소-잉크 스케이프
개요
Inkscape는 매우 강력한 오픈 소스 벡터 그래픽 편집기입니다. PDF 파일을 포함하여 다양한 형식을 지원합니다. 이를 사용하여 PDF 파일에서 페이지 요소를 추출, 수정 및 저장할 수 있습니다.
설치
sudo apt-get install inkscape
용법
1.) Inkscape로 선택한 PDF 파일을 엽니 다. 가져 오기 대화 상자가 나타납니다. 요소를 추출하려는 페이지를 선택하십시오. 다른 설정은 그대로 두십시오.
2.) Inkscape에서 클릭하고 드래그하여 추출하려는 요소를 선택하십시오.
3) 으로 선택 전환 !과 함께 선택한 개체를 삭제합니다 DELETE:
4.) + + 를 사용하여 문서 속성 대화 상자 에 액세스하고 "이미지에 문서 맞추기"를 선택 하여 문서를 나머지 개체로 자릅니다 .CTRLSHIFTD
5.) 파일 -> 다른 이름으로 저장 대화 상자 에서 문서를 PDF 파일로 저장하십시오 .
6.) 자른 문서에 비트 맵 / 래스터 이미지가있는 경우 다음에 나타나는 대화 상자에서 DPI를 설정할 수 있습니다.
7.) 모든 단계를 수행하면 선택한 객체로만 구성된 실제 PDF 파일이 생성됩니다.