Правильно вписать размер изображения в существующий PDF-файлC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Правильно вписать размер изображения в существующий PDF-файл

Сообщение Anonymous »

Я пишу простое приложение для преобразования изображений в одностраничные PDF-файлы.
Приложение работает нормально (полный исходный код доступен на github), но этот метод вызывает у меня некоторые проблемы:

Код: Выделить всё

    private void CreateDoc(string srcFilename, string folder, PageSize pageSize)
{
string dstFilename = System.IO.Path.Combine(folder, System.IO.Path.GetFileNameWithoutExtension(srcFilename) + ".pdf");

using PdfWriter writer = new(dstFilename);
using PdfDocument pdfDocument = new(writer);

iText.IO.Image.ImageData imageData = iText.IO.Image.ImageDataFactory.Create(srcFilename);

iText.Layout.Element.Image image = new(imageData);

iText.Kernel.Geom.Rectangle? rectangle = null;

if (pageSize == PageSize.ImageSize)
{
rectangle = new(0, 0, (int)image.GetImageWidth(), (int)image.GetImageHeight());
}
else
{
rectangle = pageSize.PdfSize();
if (rectangle != null)
image.ScaleToFit(
rectangle.GetWidth(),
rectangle.GetHeight());
else throw new Exception("Page size not supported!");
}

if (rectangle == null)
throw new Exception("Page not created!");

iText.Layout.Document document = new(pdfDocument, new iText.Kernel.Geom.PageSize(rectangle));

float offX = (rectangle.GetWidth() - image.GetImageScaledWidth()) / 2;
float offY = (rectangle.GetHeight() - image.GetImageScaledHeight()) / 2;

image.SetFixedPosition(offX, offY);

document.SetMargins(0, 0, 0, 0);

document.Add(image);
}
Метод создает PDF-документ в папке, содержащий только одну страницу, содержащую одно изображение (

Код: Выделить всё

srcFilename
), третий параметр — размер страницы, на которой должно быть размещено изображение (обратите внимание, что изображение будет масштабировано по размеру страницы), pageSize может быть одним из типичных размеров листа бумаги. или ImageSize.
Если я укажу правильный размер листа бумаги (например, A4, Legal ..), созданная страница PDF будет соответствовать размеру бумаги, но поскольку исходное изображение почти никогда не совпадать с размером листа, белые границы происходят. Если я хочу устранить такие границы, мне нужно установить pageSize = ImageSize... в этом случае страница создается без белых границ, но она намного больше правильного размера страницы (2x, 3x).
Как вычислить/применить коэффициент масштабирования, чтобы минимизировать разницу в размерах?

Подробнее здесь: https://stackoverflow.com/questions/791 ... isting-pdf
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Правильно вписать размер изображения в существующий PDF-файл
    Anonymous » » в форуме C#
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Правильно вписать размер изображения в существующий PDF-файл
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Правильно подгоняйте размер изображения в существующий PDF
    Anonymous » » в форуме C#
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Правильно подгоняйте размер изображения в существующий PDF
    Anonymous » » в форуме C#
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Правильно подгоняйте размер изображения в существующий PDF
    Anonymous » » в форуме C#
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»