0

我在现有 PDF 的内容页面上添加/替换了一些页码,但文本显示为粗体或粗体。任何方式都不正确,我似乎无法解决它!

这就是我的意思:

在此处输入图像描述

右边的数字是我要替换的现有页码,文字很好。左边的数字是我在 Java 中使用 iText 添加的页码。

这是代码:

private static void fixTOCPageNumbers(int i, PdfContentByte content, List<Section> sections)
        throws DocumentException, IOException {

    int xPositionRec;
    int yPositionRec;
    int xPositionText;
    int yPositionText;
    int xOffset = 0;
    int yOffset = 0;

    content.saveState();
    content.setColorStroke(new Color(77,77,77));

    content.beginText();
    content.setFontAndSize(BaseFont.createFont("fonts/LTe50327.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED), 10f);

    int count = 5;

    for(int j = 4; j <= sections.size() - 2; j++)
    {           
        int startPageIndex = sections.get(j).GetStartPageIndex();
        int endPageIndex = sections.get(j).GetEndPageIndex();

        xPositionRec = 281;
        yPositionRec = 385;
        xPositionText = 266;
        yPositionText = 386;

        if(j > 6)
        {
            yPositionRec = 195;
            yPositionText = 196;
        }

        for(int k = startPageIndex; k <= endPageIndex; k++)
        {               
            content.rectangle(xPositionRec+xOffset,yPositionRec-yOffset,12,12);
            content.setRGBColorFill(255,255,255);
            content.showTextAligned(PdfContentByte.ALIGN_CENTER, String.format("%d", count), xPositionText+xOffset, yPositionText-yOffset, 0);
            content.setRGBColorFill(77,77,77);
            //content.fillStroke();
            yOffset += 18;

            count++;
        }

        yOffset = 0;

        if(j > 6)
        {
            xOffset += 229;
        }
        else if(j == 6)
        {
            xOffset = 0;
        }
        else
        {
            xOffset += 230;
        }
    }

    xOffset = 0;
    yOffset = 0;

    content.restoreState();
    content.endText();
}

难道我做错了什么?这是我第一次使用 iText,代码库最初不是我的。

任何帮助将非常感激!

4

1 回答 1

1

您可以像这样模拟粗体:

C#

cb.BeginText();
cb.SetFontAndSize(font, 11F);

cb.SetCharacterSpacing(1F);
// Fill color (stroke fill)
cb.SetRGBColorFill(0, 0, 0);  
cb.SetLineWidth(0.5F);
// Fill stroke simulate bold
cb.SetTextRenderingMode(PdfContentByte.TEXT_RENDER_MODE_FILL_STROKE);

cb.SetTextMatrix(x, pageSize.Height - y);
cb.ShowTextAligned(PdfContentByte.ALIGN_CENTER, s, (pageSize.Width / 2F), pageSize.Height - y, 0);

cb.EndText();
于 2013-11-20T11:24:43.040 回答