Itextsharp изменить размер (как при уменьшении, а не обрезать, не сжимать) pdf с 210x297 до 197x279 - PullRequest
1 голос
/ 23 апреля 2010

Как изменить размер существующего PDF в другой формат.Я не хочу обрезать PDF, он должен быть уменьшен.(для печати)

Когда я пытаюсь это сделать, это не работает, потому что PDF-файл обрезается вместо увеличенного

document.SetPageSize(new Rectangle(558.40f, 790.83f)); // 558.40f == 197mm

1 Ответ

1 голос
/ 23 апреля 2010

Скорее всего, потому что PDF не масштабируется в зависимости от размера страницы. Когда вы устанавливаете размер страницы, и этим я имею в виду элемент страницы MediaBox, вы определяете физический размер области рендеринга. Все содержимое страницы отображается в одном масштабе независимо от области рендеринга.

Чтобы изменить это, вам необходимо перехватить поток контента и добавить матричную операцию, чтобы выполнить желаемую шкалу. Я не знаю, можете ли вы сделать это в iTextSharp, но фактический оператор PDF - это m, и если вы вставите это:

sx sy 0 0 0 0 m

где sx и sy - плавающие числа, представляющие шкалу в X и Y, которую вы хотите применить. В вашем случае вы изменяете X с 210 на 197, то есть в X - шкалой 0,938. Y - с 297 до 279, так что это шкала 0,939, поэтому вам нужно вставить:

.938 .939 0 0 0 0 m

в поток контента, чтобы повлиять на это изменение в дополнение к изменению MediaBox.

...