2013-11-18 3 views
0

Я добавляю/заменяю некоторые номера страниц на странице содержимого существующего PDF, но текст выделяется полужирным шрифтом или грубым. Это не так, и я не могу это исправить!Текст, добавленный в PDF, выделен жирным шрифтом/грубо

Это то, что я имею в виду:

enter image description here

Цифры справа являются существующие номера страниц я замещающие и текст хорошо. Числа слева - это номера страниц, которые я добавил с помощью iText в Java.

Вот код:

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, а база кода изначально не была моей.

Любая помощь была бы высоко оценена!

+0

Просмотрите LTe50327.ttf, что у вас есть FRUTIGER шрифт с не жирным шрифтом на нем. – icrovett

+0

Этот шрифт используется в другом месте программы, и он получается отлично! –

+0

Я думаю, что это должно быть что-то с 'setColorStroke (новый цвет (77,77,77));' строка, может быть, вы должны попытаться удалить ее из 'PdfContentByte' ... просто догадка, но я думаю он меняет интенсивность, вы можете попробовать что-то вроде 'setColorStroke (Color.Black);' – icrovett

ответ

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(); 
Смежные вопросы