23

Есть ли какой-либо простой способ (сценарий) конвертировать PDF с векторными изображениями в PDF с растровыми изображениями? Другими словами, я хочу сгенерировать PDF-файл с таким же (не растрированным) текстом, но с заменой каждого векторного изображения растрированной версией.Замена векторных изображений в формате PDF с растровыми изображениями

Я иногда читаю PDF-файлы технических статей на своем Kindle и обнаружил, что чтение PDF напрямую вызывает разочарование. К счастью, Amazon's automatic conversion PDF-файлов в формате Kindle отлично справляется с оплатой текстовых частей большинства PDF-файлов, которые я пробовал. Однако, в то время как растровые изображения, похоже, делают процесс преобразования точным, векторные изображения становятся ужасно искаженными. Было бы здорово, если бы я мог легко преобразовать PDF так, чтобы все его векторные изображения были растрированы.

Меня интересуют любые возможные решения, но предпочтительнее использовать Linux или Windows.

+0

Примечания: этот вопрос был первоначально [вывешен] (HTTP: // tex.stackexchange.com/questions/47076/replacing-vector-images-in-a-pdf-with-raster-images) на сайте [TeX] (http://tex.stackexchange.com/), но мода там предложили я попрошу здесь здесь. –

+0

Вы можете экспортировать все страницы в изображения, а затем создать PDF с помощью этих изображений. Есть много приложений, которые могут это сделать. Я думаю, что комбинация imagemagick и/или ghostscript будет делать. Для программистов я написал статью под названием «How To Rasterize A PDF Document In .NET», в которой показано, как это сделать, используя наш продукт PDFOne .NET. – BZ1

+1

Но я только хочу растеризовать изображения/цифры в PDF, а не текст. Я не вижу никакого способа сделать это, используя ImageMagick. Я посмотрю на Ghostscript. –

ответ

2

Это немного сложно, но вы просили о любом возможном решении. Кроме того, это решение не может быть автоматизировано.

1) Открыть pdf-файл с изображениями в формате Inkscape. Затем выберите все изображение с select инструмента (F1)

2) Если векторное изображение является последовательны более одного графического SVG нажмите Ctrl + G (Object -> Group)

3) сократить сгруппированных Изображение в формате SVG Ctrl + x

4) открыть новое окно Inkscape Ctrl + n и вставить изображение Ctrl + v

5) выберите файл -> экспорт Bitmap (Shift + Ctrl + e), может быть, вы хотите увеличить точек на дюйм

6) вернуться к первому окну Inkscape, Файл -> Импорт (Ctrl + i) и выберите ранее экспортированный растровое

7) поместить растровое изображение в том месте, где было изображение SVG

Сохранить pdf, а векторное изображение заменяется растровым изображением.

+0

Очень сложная и трудоемкая.Я ищу более автоматическую версию и думал, что такой скрипт должен где-то существовать. – data

+0

Да, я понял, что вам нужен сценарий. Но я думал после 11 месяцев без единого ответа, по крайней мере, по-моему. –

1

Вот один из способов решить проблему:

Шаг 1: Используйте онлайн конвертер PDF-к-HTML, как один здесь:

http://www.idrsolutions.com/online-pdf-to-html5-converter/

Этот инструмент преобразует PDF в набор изображений и наложение текста. В этот момент векторные изображения должны быть преобразованы в растр.

Шаг 2: Преобразование HTML + изображения обратно в PDF:

http://pdfcrowd.com/#convert_by_upload+with_options

В результате PDF будет иметь все векторные изображения растрирования, и весь текст будет оставаться текст, так что вы можете выбрать, копировать, и т. д.

+0

Проблема для меня в том, что для многих PDF-файлов pdf2html не может правильно разобрать PDF-файл, что делает его неэффективным. – data

+0

Другая проблема заключается в том, что текст _within_ цифры должны быть растрированы вместе с остальными фигурами; например, подумайте о метках на осях графика. Это решение (pdf2html) оставляет текст в виде текста, поэтому полученная растрированная фигура является неполной. –

+0

Также неясно, как вы будете использовать это для PDF с более чем одной страницей. –

8

У меня была аналогичная проблема, и я решил ее использовать с помощью средства преобразования ImageMagics (http://www.imagemagick.org/script/index.php).Это приходит с Linux и прекрасно работает на Windows/Cygwin или OS X

convert -density 300 largeVectorFileFromR.pdf out.pdf

С -плотностью 300 Вы разрешение управления (как DPI).

Даунсайд: текст также растеризуется, я понимаю, что Майкл этого не хочет.

+0

Пользователи, сталкивающиеся с ошибкой 'no images defined', должны будут установить требуемую зависимость ghostscript gs. Для пользователей MacOS с Homebrew: 'brew install ghostscript' –

2

Pitstop Pro v2 update 3 от Enfocus может сделать именно это. У него есть действие под названием «Растрировать содержимое страницы, сохраняя текст», который работает очень хорошо. Это плагин для Adobe Acrobat, поэтому он требует немного больше, но также доступен как серверное решение.

+2

Добро пожаловать в stackoverflow. Выше пост может ответить на вопрос. Но малое объяснение может помочь программистам понять, как это работает. – Daenarys

0

я использовал следующее:

gswin32c -o "%2" -dFirstPage=1 -dLastPage=1 -sDEVICE=pngalpha -r72x72 -dUseCropBox -dFitPage "%1" -dBATCH -dNOPAUSE 

где %1 является входной файл и %2 является выходом. Это можно использовать с LaTeX, сгенерированный PNG имеет такое же отношение и размер страницы, что и исходный PDF, поэтому относительное положение изображения не изменится.

Обратите внимание, что в Linux вам может потребоваться использовать gs, а не gswin32c.

Вы также можете задать диапазон страниц, а затем распечатать страницы в формате PDF. Недостатком является то, что текст также растеризуется.

0

Конвертировать PDF в djvu с помощью https://jwilk.net/software/pdf2djvu конвертер. Снимите флажок "antialias fonts, vector.". Это значительно уменьшит размер файла и увеличит время загрузки документа.

0

Через несколько дней ищут какое-то решение, основанное на "Remove all text from PDF file" и "How to add a picture onto an existing pdf file?" Я нашел (безобразно): решение, поддерживающее сценарии

gs -o /tmp/onlytxt.pdf -sDEVICE=pdfwrite -dFILTERVECTOR -dFILTERIMAGE $INPUT_FILE && \ 
gs -o /tmp/graphics.pdf -sDEVICE=pdfwrite -dFILTERTEXT $INPUT_FILE && \ 
convert -density $DPI -quality 100 /tmp/graphics.pdf /tmp/graphics.png && \ 
convert -density $DPI -quality 100 /tmp/graphics.png /tmp/graphics.pdf && \ 
pdftk /tmp/graphics.pdf stamp /tmp/onlytxt.pdf output $OUTPUT_FILE && \ 
rm /tmp/onlytxt.pdf /tmp/graphics.pdf /tmp/graphics.png 

были у нас есть три переменные input_file, output_file и DPI. Мы разделяем текстовое и графическое содержимое с помощью Ghostscript, преобразуем графическое изображение в растровое изображение (PNG) и соединяем два с помощью pdftk.

Я использовал это успешно, чтобы конвертировать огромные векторные изображения для использования в научных статьях.

0

inkscape - лучшее решение, я быстро сделал этот довольно неоптимизированный командный файл, который делает именно это, и вы можете играть с ним и изменять параметры. ImageMacick конвертировать, гс, или pdftoimages не работает так хорошо, как inkscape они либо не экспортировать слои или экспорт, но с плохим качеством:

#!/bin/bash 
#set -xev 
ORIGINAL_FOLDER=`pwd` 
JPEGS=`mktemp -d` 
unzip "$1" -d "$JPEGS" 
cd "$JPEGS" 
# expang the pdf in pdf pages 
pdftk combined_to_do.pdf burst output pg_%04d.pdf 
#1) print the pdf's to pngs as they are seen with alpha, layers, transparency etc, this cannot be done by ImageMacick convert or pdftoimages 
ls ./pg*.pdf | xargs -L1 -I {} inkscape {} -z --export-dpi=300 --export-area-drawing --export-png={}.png 
#2) Second change to jpgs 
rm *.pdf 
ls ./p*.png | xargs -L1 -I {} convert {} -quality 100 -density 300 {}.jpg 
#3) This to make a pdf file out of every jpg image without loss of either resolution or quality: 
ls -1 ./*jpg | xargs -L1 -I {} img2pdf {} -o {}.pdf 
#4) This to concatenate the pdfpages into one: 
pdftk *.jpg.pdf cat output combined.pdf 
#5) And last I add an OCRed text layer that doesn't change the quality of the scan in the pdfs so they can be searchable: 
pypdfocr combined.pdf 
cp "$JPEGS/combined_ocr.pdf" "$ORIGINAL_FOLDER/$1_ocr.pdf" 
cp "$JPEGS/combined.pdf" "$ORIGINAL_FOLDER/$1.pdf" 

 Смежные вопросы

  • Нет связанных вопросов^_^