Откуда берутся нижняя и правая границы в abcPdf

Почему я получаю границу внизу и справа при рендеринге html с помощью abcAdf. PS Я получил профессиональную лицензию, используя (ABCpdf9-64.dll)

Мой процесс заключается в создании страницы:

  1. Я использую основной/дочерний шаблон макета в mvc (работает)
  2. Я указываю на этот html, используя abcPdf для преобразования в pdf

Визуализация HTML

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

<h1>Layout</h1>
<p>
    content
</p>

Код C# для отображения PDF

Мой код выглядит следующим образом:

        using (var pdf = new Doc())
        {
            pdf.HtmlOptions.Timeout = 600000;

            pdf.HtmlOptions.AddTags = true;
            pdf.Page = pdf.AddPage();

            var id = pdf.AddImageUrl(url, true, 1024, true);
            if (allowPaging)
            {
                while (true)
                {
                    if (!pdf.Chainable(id))
                    {
                        break;
                    }

                    pdf.Page = pdf.AddPage();
                    id = pdf.AddImageToChain(id);
                }

                for (int i = 1; i <= pdf.PageCount; i++)
                {
                    pdf.PageNumber = i;
                    pdf.Flatten();
                }

                ////reset back to page 1 so the pdf starts displaying there
                if (pdf.PageCount > 0)
                {
                    pdf.PageNumber = 1;
                }
            }

            return store(pdf);
        }

Вывод

Мой текст/html отображается нормально, но я получаю границы, о которых я не просил.

Выведенный вывод:

введите здесь описание изображения

Обратите внимание на линию роста волос в нижней части изображения.


person cpoDesign    schedule 03.02.2015    source источник
comment
Что такое abcPdf.GetPdfDoc? Я не могу найти такой вызов в официальной документации ABCpdf.   -  person Ross Presser    schedule 04.02.2015
comment
@RossPresser Я обновил свой пример, удалив функцию, которая применяла лицензию   -  person cpoDesign    schedule 05.02.2015
comment
Эта граница на самом деле находится в PDF-файле или визуализируется вашим средством просмотра?   -  person CodeCaster    schedule 05.02.2015
comment
Он отображается, когда я конвертирую html в pdf (ie9)   -  person cpoDesign    schedule 05.02.2015


Ответы (1)


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

Вот фрагмент кода, который показывает, как установить поля:

строка html; // мой html-контент, который должен отображаться на странице pdf

            Doc pdf = new Doc();

            // adjust the default rotation and save
            double w = pdf.MediaBox.Width;
            double h = pdf.MediaBox.Height;
            double l = pdf.MediaBox.Left;
            double b = pdf.MediaBox.Bottom;

            // explicitly giving page size
            pdf.MediaBox.String = "A4";
            pdf.Transform.Rotate(90, l, b);
            pdf.Transform.Translate(w, 0);
            pdf.Rect.Width = h;
            pdf.Rect.Height = w;

            int theID1 = pdf.GetInfoInt(pdf.Root, "Pages");
            pdf.SetInfo(theID1, "/Rotate", "90");

            int theID;
            pdf.Rect.String = "17 55 823 423";
            theID = pdf.AddImageHtml(html.ToString()); //Writes the HTML image to PDF

Вот картинка, которая описывает расположение полей для некоторых ненужных значений. Здесь 20 предполагает, что ваш контент начинается на 20 пикселей слева от страницы pdf 770 предполагает, что ваш контент заканчивается на 770 пикселей слева от страницы pdf 75 предполагает, что ваш контент начинается на 55 пикселей выше нижней части страницы pdf 600 предполагает, что ваш содержимое заканчивается на 600 пикселей выше нижней части страницы PDF

диаграмма маржи abcpdf от CoffeeSipper

В вашем случае вы должны добавить

pdf.Rect.String = "20 75 770 600"; // giving junk values

прямо перед

var id = pdf.AddImageUrl(url, true, 1024, true);

ПРИМЕЧАНИЕ. В этом примере я явно установил ландшафтный режим вместо портретного. Но ориентация не имеет значения для установки полей.

person CoffeeSipper    schedule 24.04.2015