Есть ли у вас идеи, как извлечь часть документа PDF и сохранить его в формате PDF? На OS X это абсолютно тривиально, используя Preview. Я пробовал редактор PDF и другие программы, но безрезультатно.
Мне нужна программа, в которой я выбираю нужную деталь, а затем сохраняю ее в формате PDF с помощью простой команды, например CMD kbd> + N kbd> в OS X. извлеченная часть должна быть сохранена в формате PDF, а не в формате JPEG и т. д.
ძალიან მარტივია. გამოიყენეთ ნაგულისხმევი PDF მკითხველი, აირჩიეთ "ბეჭდვა ფაილში" და ეს არის ის!
შემდეგ:
pdftk
- полезный многоплатформенный инструмент для работы ( домашняя страница pdftk ).
pdftk full-pdf.pdf cat 12-15 output outfile_p12-15.pdf
вы передаете имя файла основного PDF-файла, затем указываете ему включать только определенные страницы (12-15 в этом примере) и выводить их в новый файл.
Существует служебная программа командной строки pdfseparate .
Из документации:
pdfseparate sample.pdf sample-%d.pdf
extracts all pages from sample.pdf, if i.e. sample.pdf has 3 pages, it
produces
sample-1.pdf, sample-2.pdf, sample-3.pdf
Или, чтобы выбрать одну страницу (в данном случае первая страница ) из файла sample.pdf:
pdfseparate -f 1 -l 1 sample.pdf sample-1.pdf
Arbedwch hwn fel sgript gragen, fel pdfextractor.sh:DLE12188400 I redeg math:
./pdfextractor.sh 4 20 myfile.pdf
4
yn cyfeirio at y dudalen y bydd yn cychwyn y pdf newydd.
Mae 20
yn cyfeirio at y dudalen y bydd yn dod â'r pdf i ben gyda hi.
myfile.pdf
yw'r ffeil pdf rydych chi am dynnu rhannau ohoni.
Yr allbwn fyddai myfile_p4_p20.pdf
yn yr un cyfeiriadur y ffeil pdf wreiddiol.
Yr holl wybodaeth hon a mwy yma: Tip Tech
QPDF отлично. Используйте этот способ для извлечения страниц 1-10 из input.pdf
и сохранения их как output.pdf
:
qpdf input.pdf --pages . 1-10 -- output.pdf
При этом сохраняются все метаданные, связанные с этим файлом.
Если вы хотите, чтобы страницы с 1 по 5 из infile.pdf, но вы хотели, чтобы остальные метаданные были удалены, вы можете вместо этого запустить
qpdf --empty --pages infile.pdf 1-5 -- outfile.pdf
Вы можете установить его, вызвав:
sudo apt-get install qpdf
Это отличный инструмент для работы с PDF. Это очень быстро и имеет очень мало зависимостей. «Он может шифровать и линеаризовать файлы, раскрывать внутреннюю структуру файла PDF и выполнять множество других операций, полезных для конечных пользователей и разработчиков PDF».
Репозиторий кода QPDF на GitHub .
Trosolwg
Creais sgript ychydig yn fwy datblygedig yn seiliedig ar y tiwtorial @ThiagoPonte sy'n gysylltiedig â. Ei nodweddion allweddol yw
Ciplun
Cod
#!/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
Gosod
Dilynwch y cyfarwyddiadau gosod generig ar gyfer sgriptiau Nautilus . Gwnewch yn siŵr eich bod yn darllen pennawd y sgript yn ofalus gan y bydd yn helpu i egluro gosod a defnyddio'r sgript.
Trosolwg
Cymhwysiad python-gtk bach yw PDF-Shuffler, sy'n helpu y defnyddiwr i uno neu rannu dogfennau pdf a chylchdroi, cnydio ac aildrefnu eu tudalennau gan ddefnyddio rhyngwyneb graffigol rhyngweithiol a greddfol. Mae'n ffrynt ar gyfer python-pyPdf.
Gosod
sudo apt-get install pdfshuffler
Defnydd
Gall PDF-Shuffler gnwdio a dileu tudalennau PDF sengl. Gallwch ei ddefnyddio i dynnu ystod tudalen o ddogfen neu hyd yn oed dudalennau rhannol gan ddefnyddio'r swyddogaeth cnydio:
Trosolwg
Mae Inkscape yn olygydd graffeg fector ffynhonnell agored pwerus iawn. Mae'n cefnogi ystod eang o wahanol fformatau, gan gynnwys ffeiliau PDF. Gallwch ei ddefnyddio i echdynnu, addasu ac arbed elfennau tudalen o ffeil PDF.
Gosod
sudo apt-get install inkscape
Defnydd
1.) Agorwch y ffeil PDF o'ch dewis gydag Inkscape. Bydd deialog mewnforio yn ymddangos. Dewiswch y dudalen rydych chi am dynnu elfennau ohoni. Gadewch y gosodiadau eraill fel y maent:
2.) Yn Inkscape cliciwch a llusgwch i ddewis yr elfen (au) rydych chi am eu tynnu:
3.) Gwrthdroi'r dewis gyda ! a dilëwch y gwrthrych a ddewiswyd gyda DILEU :
4.) Cnydau'r ddogfen i'r gwrthrychau sy'n weddill trwy gyrchu'r ymgom Dogfen Priodweddau gyda CTRL + SHIFT + D a dewis "dogfen addas i'r ddelwedd":
5.) Cadwch y ddogfen fel ffeil PDF o'r Ffeil -> Cadw fel deialog :
6.) Os oes delweddau map did / raster yn eich dogfen wedi'i docio gallwch chi osod eu DPI yn y dialog sy'n ymddangos nesaf:
7.) Os gwnaethoch ddilyn pob cam byddwch wedi cynhyrchu ffeil PDF wir sy'n cynnwys y gwrthrychau o'ch dewis yn unig:
В любой системе, где установлен дистрибутив TeX:
pdfjam <input file> <page ranges> -o <output file>
Например:
pdfjam original.pdf 5-10 -o out.pdf
pdftk
( sudo apt-get install pdftk
) также является отличной командной строкой для работы с PDF. Вот несколько примеров того, что может pdftk
:
Collate scanned pages
pdftk A=even.pdf B=odd.pdf shuffle A B output collated.pdf
or if odd.pdf is in reverse order:
pdftk A=even.pdf B=odd.pdf shuffle A Bend-1 output collated.pdf
Join in1.pdf and in2.pdf into a new PDF, out1.pdf
pdftk in1.pdf in2.pdf cat output out1.pdf
or (using handles):
pdftk A=in1.pdf B=in2.pdf cat A B output out1.pdf
or (using wildcards):
pdftk *.pdf cat output combined.pdf
Remove page 13 from in1.pdf to create out1.pdf
pdftk in.pdf cat 1-12 14-end output out1.pdf
or:
pdftk A=in1.pdf cat A1-12 A14-end output out1.pdf
Burst a single PDF document into pages and dump its data to
doc_data.txt
pdftk in.pdf burst
Rotate the first PDF page to 90 degrees clockwise
pdftk in.pdf cat 1east 2-end output out.pdf
Rotate an entire PDF document to 180 degrees
pdftk in.pdf cat 1-endsouth output out.pdf
В вашем случае я бы сделал:
pdftk A=input.pdf cat A<page_range> output output.pdf
Вы пробовали PDF Mod?
Вы можете, например .. извлекать страницы и сохранять их в формате pdf.
Описание:
PDF Mod - это простой инструмент для изменения PDF документы. Он может вращать, извлекать, удалять
и изменять порядок страниц с помощью перетаскивания. Несколько документов можно объединить с помощью перетаскивания
и отпускания. Вы также можете редактировать заголовок, тему, автора и ключевые слова документа PDF
с помощью PDF Mod.
Надеюсь, это будет полезно.
Regars.
Я пытался сделать то же самое. Все, что вам нужно сделать, это:
установить pdftk
:
sudo apt-get install pdftk
, если вы хотите извлечь случайные страницы:
pdftk myoldfile.pdf cat 1 2 4 5 output mynewfile.pdf
, если вы хотите извлечь диапазон:
pdftk myoldfile.pdf cat 1-2 4-5 output mynewfile.pdf
Пожалуйста, проверьте источник для получения дополнительной информации.
Оказывается, я могу это сделать с помощью imagemagick
. Если у вас его нет, просто установите с помощью:
sudo apt-get install imagemagick
Note 1 :
Я пробовал это с одностраничным pdf (я учусь использовать imagemagick
, поэтому мне не нужно больше проблем, чем необходимо). Я не знаю, будет ли / как это работать с несколькими страницами, но вы можете извлечь одну интересующую страницу с помощью pdftk
:
pdftk A=myfile.pdf cat A1 output page1.pdf
, где вы указываете номер страницы, которая будет разделена (в примере выше , A1
выбирает первую страницу).
Примечание 2 : Полученное изображение с помощью этой процедуры будет растром.
Откройте PDF-файл с помощью команды display
, которая является частью набора imagemagick
:
display file.pdf
Мой выглядел так:
Щелкните изображение, чтобы увидеть версию с полным разрешением.
Теперь вы щелкаете по окну, и в стороне появляется меню. Там выберите Преобразовать | Кадрирование .
Вернувшись в главное окно, вы можете выбрать область, которую хотите обрезать, просто перетащив указатель (классический выбор по углу).
Обратите внимание на указатель в форме руки вокруг изображения при выборе
Этот выбор можно уточнить перед переходом к следующему шагу.
Когда вы закончите, обратите внимание на маленький прямоугольник, который появляется в верхнем левом углу (см. изображение выше). Сначала показаны размеры выбранной области (например, 281x218
), а затем координаты первого угла (например, + 256 + 215
).
Запишите размеры выбранная область; он понадобится вам в момент сохранения кадрированного изображения.
Теперь,вернувшись во всплывающее меню (которое теперь является конкретным меню «кадрирования»), нажмите кнопку Кадрирование .
Наконец, когда вы удовлетворены результатами кадрирования, нажмите меню Файл | Сохранить
Перейдите в папку, в которую вы хотите сохранить кадрированный PDF-файл, введите имя, нажмите кнопку Формат , в окне «Выберите тип формата изображения» выберите PDF и нажмите кнопку Выберите . Вернувшись в окно «Обзор и выберите файл», нажмите кнопку Сохранить .
Перед сохранением imagemagick
попросит «выбрать геометрию страницы». Здесь вы вводите размеры вашего обрезанного изображения, используя простую букву «x» для разделения ширины и высоты.
Теперь вы можете отлично все это сделать из командной строки (команда convert
с опцией -crop
) - конечно, это быстрее, но вам нужно заранее знать координаты изображения, которое вы хотите извлечь. Посмотрите примеры man convert
и на их веб-странице .
Разделение и объединение PDF-файлов весьма полезно для этой и других операций с PDF-файлами.
Загрузите с здесь
Поскольку исходный пользователь просил интерактивный инструмент, а не инструмент командной строки: простое решение - использовать любой Средство просмотра PDF (нормально в Kubuntu, evince или даже Firefox в Ubuntu), а затем просто используйте стандартный диалог печати, выберите «печать в файл PDF», а затем выберите в расширенном диалоговом окне настроек, какие страницы «печатать». Этот вариант имеет некоторые недостатки, так как некоторые уловки в исходном PDF-файле (например, повернутые страницы, формы и т. Д.) Могут быть потеряны, но он работает без проблем с большинством простых PDF-файлов.
Если вы хотите извлечь из PDF-файлов, вы можете воспользоваться http://www.sumnotes.net.
Это удивительный инструмент для извлечения заметок, выделения и изображений из PDF-файлов.
Вы также можете посмотреть учебники на Youtube, набрав sumnotes
.
Надеюсь, вам понравится!
mutool , который поставляется с mupdf, может выполнять множество простых операций по обработке PDF, но имеет более элегантный синтаксис, чем qpdf
(и некоторые другие ответы). Кроме того, это кажется быстрее на больших PDF-файлах:
# extract page range 20-40
mutool clean in.pdf out.pdf 20-40
# extract from all over the pdf
mutool clean in.pdf out.pdf '1, 3-4, 74-92'
К сожалению, Ubuntu не предоставляет команду для этого напрямую.
Но вы можете использовать pdfseparate и pdfunite вместе (оба по умолчанию поставляются с вашим Ubuntu)
Итак, если вы хотите извлечь страницы с 32
в 65
из sourcefile.pdf
в новый файл называется extract.pdf
, вы можете ввести следующие команды:
mkdir tmppdfdir
pdfseparate -f 32 -l 65 sourcefile.pdf tmppdfdir/page-%d.pdf
pdfunite tmppdfdir/page*.pdf extract.pdf
rm -rf tmppdfdir/
Предупреждение: убедитесь, что tmppdfdir
еще не существует!
Apache PDFBox - это инструмент Java с открытым исходным кодом для работы с документами PDF.Он поставляется с инструментами командной строки, которые, среди прочего, могут разделять страницы из pdf ( см. Руководство здесь ).
Чтобы использовать его, просто установите pdfbox-app-2.?. ? .jar
и выполните такую команду:
java -jar pdfbox-app-2.0.20.jar PDFSplit -startPage 1 -endPage 10 -outputPrefix ch1 book.pdf
Я начал собирать инструмент , чтобы обеспечить упрощенный интерфейс для общих действий.
Вы можете вырезать подмножество PDF следующим образом:
$ npm install @mountbuild/mouse -g
$ mouse slice input.pdf -s 15 -e 25 -o output.pdf
Это создаст новый PDF-файл для страниц между 15 и 25 включительно.
Если ничего другого, проверьте исходный код и посмотрите, как написать свой собственный сценарий для этого на JavaScript.
Если вы хотите использовать встроенные команды bash, тогда pdfseparate и pdfunite для вас.
pdfseparate sample.pdf sample-%d.pdf
# ls; sample.pdf sample-1.pdf sample-2.pdf sample-3.pdf sample-4.pdf
pdfunite sample-2.pdf sample-3.pdf output.pdf
# now you can use output.pdf
в декабре 2015 года, этот блог Ubuntu Dustin Kirkland Были более 1 миллиарда пользователей Ubuntu:
-121--913195-Сколько «пользователей» Ubuntu в конечном итоге в конечном итоге? Бьюсь об заклад, сегодня есть более миллиарда человек, используя Ubuntu - как прямо и косвенно. Без сомнения, есть более миллиарда человек на планете, получавшем пользу от услуг, безопасности и наличия Ubuntu сегодня.
Испытано на Ubuntu 20.04 с pdftk --version
3.0.9 с 11 мая 2018 года (дата, показанная на дне человек PDFTK
).
При использовании PDFTK
, вот как отформатировать его для нескольких групп страниц:
pdftk in.pdf cat 13 18 33-36 39-41 52 output out.pdf
Это будет захватывать эти группы страниц, включительно.
Для установки и / или обновления PDFTK
:
sudo apt update
sudo apt install pdftk
ThiagoPonte's Ghostscript answer is great for its portability, but it does not explain how to use a discontinuous page list, such as 2, 6, 7, 8, 9, 11. Это возможно с помощью -sPageList
:
gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -sPageList=2,6-9,11 -sOutputFile=out.pdf in.pdf
Однако я не смог заставить его работать на старых версиях Ghostscript, поэтому, вдохновленный вопросом Stack Overflow, я создал этот сценарий оболочки, который полагается только на -dFirstPage
и -dLastPage
:
#!/bin/sh -f
if [ "$#" != 2 ] && [ "$#" != 3 ]; then
>&2 echo "Usage: $0 pagelist infile [outfile]"
exit 11
fi
range=$1
infile=$2
outfile=${3-"${2%pdf}"out.pdf}
set --
IFS=,
for i in $range; do
set -- "$@" "-dFirstPage=${i%-*}" "-dLastPage=${i#*-}" "$infile"
done
gs -sOutputFile="$outfile" -sDEVICE=pdfwrite -dNOPAUSE -dBATCH "$@"
Вы можете сохранить его в каталоге PATH, например /usr/local/bin/
, сделать его исполняемым с помощью chmod +x scriptname
, а затем просто вызвать
scriptname 2,6-9,11 in.pdf out.pdf