添加到PDF的文字显示为粗体/粗糙

时间:2013-11-18 15:30:14

标签: java pdf itext pdf-manipulation

我正在现有PDF的内容页面上添加/替换某些页码,但文本是粗体或粗体。这是不对的,我似乎无法解决它!

这就是我的意思:

enter image description here

右边的数字是我要替换的现有页码,文字很好。左边的数字是我在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,代码库本来就不是我的。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分: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();