Itext прямоугольник не будет кровоточить к краю страницы - PullRequest
2 голосов
/ 08 января 2012

Я пытаюсь изменить цвет фона одной страницы многостраничного PDF-документа, созданного с помощью iText.

Самый простой способ сделать это - создать прямоугольник на весь размер страницы с указанным цветом фона и применить его к рассматриваемой странице с помощью утилиты PdfContentByte. (после использования Document API этот вариант казался не лучшим, так как при этом применялась стилизация ко ВСЕМ страницам документа, которые я не хотел).

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

Rectangle r = new Rectangle(0, 0, helper.getPageWidth(), helper.getPageHeight());
r.setBackgroundColor(Constants.GREEN);

PdfContentByte cb = helper.getWriter().getDirectContent();
cb.rectangle(r);
cb.setColorFill(Constants.GREEN);
cb.setColorStroke(Constants.GREEN);
cb.fillStroke();

Кажется, что бы я ни пытался, я не могу избавиться от единственного белого пиксельного ряда вдоль этих трех сторон страницы. У кого-нибудь есть идеи, как пролить кровь на ОЧЕНЬ край страницы iText?

1 Ответ

0 голосов
/ 08 февраля 2013

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

(главный подозреваемый мне эта строка Rectangle r = new Rectangle(0,0,helper.getPageWidth(),helper.getPageHeight()))

Я приложил вывод и код, который использовал.

 package com.pra.itext;

    import com.lowagie.text.DocumentException;
    import com.lowagie.text.Rectangle;
    import com.lowagie.text.pdf.PdfContentByte;
    import com.lowagie.text.pdf.PdfReader;
    import com.lowagie.text.pdf.PdfStamper;
    import java.awt.Color;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;

    /**
     *
     * @author Prajit
     */
public class ItextRect {
    public static void main(String[] args) {
        PdfReader rdrPdf = null;
        PdfStamper stmprPdf = null;
        try {
            rdrPdf = new PdfReader("E:/Head.First.Servlets&Jsp.pdf");
            stmprPdf = new PdfStamper(rdrPdf, new FileOutputStream(new File("D:/Example.pdf")));
            for (int pgCnt = 1; pgCnt <= rdrPdf.getNumberOfPages(); pgCnt++) {
                if (pgCnt == 1) {
                    PdfContentByte pdfCntntByt = stmprPdf.getUnderContent(pgCnt);
                    Rectangle r = new Rectangle(rdrPdf.getPageSize(pgCnt));
                    r.setBackgroundColor(Color.red);
                    pdfCntntByt.rectangle(r);
                    pdfCntntByt.setColorFill(Color.red);
pdfCntntByt.setColorStroke(Color.red);
                    pdfCntntByt.fillStroke();
                }
            }
            stmprPdf.close();
            rdrPdf.close();
        } catch (DocumentException de) {
            System.err.println(de.getMessage());
        } catch (IOException ioe) {
            System.err.println(ioe.getMessage());
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...