Измените 0,00pt строки PDF на больший размер - PullRequest
1 голос
/ 27 марта 2020

В этом PDF рисунки на последней странице, очевидно, используют ширину строки 0,00pt. Это делает их практически нечитаемыми на экране и полностью невидимыми при печати. ​​

Существует ли относительно безболезненный способ изменить эти строки "без ширины", чтобы иметь некоторую ширину? Есть много мелких деталей, поэтому преобразование в изображение не сохранит достаточно деталей, если только не используется разрешение outlandi sh ... тогда снова возникает проблема "без ширины".

Я установил GhostScript , пробег pdf2ps in.pdf med.ps, затем ps2pdf med.ps out.pdf, и веса линий абсолютно одинаковы. Затем я открыл med.ps в текстовом редакторе, надеясь, что смогу заставить скрипт python «найти и заменить» эти значения нулевой ширины линии, но я не вижу ничего похожего на «0 w» в файле. Возможно, он где-то определен в макросе, но я его не вижу.

Эта идея возникла из Изменение ширины всех строк в PDF программным способом и Вес утолщенных линий при печати PDF .

Ответы [ 2 ]

2 голосов
/ 28 марта 2020

Лучше всего использовать инструмент для распаковки PDF-файла (например, с помощью MuPDF; mutool -d <in.pdf> <out.pdf> или с Ghostscript gs -sDEVICE=pdfwrite -o out.pdf -dCompressPages=false in.pdf), а затем использовать текстовый редактор или какой-либо инструмент сценариев, такой как sed, для поиска "0 w "и заменить на" что-то другое ".

PDF не является языком программирования, в отличие от PostScript, поэтому вы можете надежно искать использование оператора, например, в файле PDF, пытаясь сделать то же самое в PostScript Файл, как указано выше beginner6789, чрезвычайно сложен.

Если вы хотите сжать файл finak, вы можете запустить отредактированный файл через устройство pdfwrite Ghostscript, используя что-то вроде gs -sDEVICE=pdfwrite -o final.pdf in.pdf.

Вы абсолютно не должны использовать устройство Ghostscript ps2write для создания PostScript; модель обработки изображений PostScript не полностью совместима с PDF, и любые конструкции PDF, которые не могут быть представлены в PostScript (например, любые виды прозрачности), будут отображаться на изображении. На самом деле, не делай этого.

1 голос
/ 28 марта 2020

Это может быть проблемой, если используется много разных весов, и вы просто хотите изменить ширину 0,0. Если бы они были все 0.0, тогда размещение этого раннего на странице могло бы работать, если только постскриптум не ищет в системных словарях команду:

/setlinewidth {pop} def

Ширина линии по умолчанию для моего ghostscript равна 1.0, так что вместо этого следует использовать автоматически ширины линии 0.0.

В pdf2ps обычно есть много словарей в стиле pdf, поэтому поиск кода, используемого для setlinewidth, может сбить с толку. Заданная ширина должна быть где-то там. Некоторым людям нравится читать PostScript.

PDF-файлы на самом деле не предназначены для редактирования, поэтому я использую эти параметры, чтобы упростить чтение окончательного PDF-файла: -dCompressPages = false -dCompressStreams = false на всякий случай, если есть некоторые полезную информацию для просмотра в pdf.

РЕДАКТИРОВАТЬ: в зависимости от кода, использованного для создания оригинального постскриптума, могут быть следующие метки:

dup/LW//knownget exec{
setlinewidth
}if

/w/setlinewidth load def

Таким образом, может быть LW или w используется для setlinewidth, как в этом простом примере. Большинство из них не так просты.

EDIT2: Здесь есть полезная информация: Как изменить ширину строк в файле PDF / PostScript

...