iTextSharp를 사용하여 PDF에서 다양한 요소 ("셀"이라고 읽음)를 스타일 화해야합니다. 등 라벨, 헤더, 서브 헤더, 수는 지금, 나는 각 세포 유형에 대한 세 가지 방법을 사용하고 있습니다 : "기본"이 세 가지 방법의 각 세트에 대한 세포 유형으로 치환대리자를 사용하여 스타일 지정 방법을 호출하려면 어떻게해야합니까?
public static PdfPCell GetDefaultCell(string strText)
{
PdfPCell cell = new PdfPCell(new Phrase(strText, GetDefaultFont()));
cell.Border = 0;
return cell;
}
public static PdfPCell GetDefaultCell(string strText, int iColspan)
{
PdfPCell cell = new PdfPCell(new Phrase(strText, GetDefaultFont()));
cell.Border = 0;
cell.Colspan = iColspan;
return cell;
}
public static PdfPCell GetDefaultCell(string strText, int iColspan, int iAlign)
{
PdfPCell cell = new PdfPCell(new Phrase(strText, GetDefaultFont()));
cell.Border = 0;
cell.Colspan = iColspan;
cell.HorizontalAlignment = iAlign;
return cell;
}
. 나는 이것이 비늘로 생각하지 않는다. 특히 지금 내가 가진 20 가지 또는 30 가지 이상의 유형으로 끝나면. colspan 및 horizontalalignment 속성 이상을 수정하려는 경우 어떻게해야합니까? 여기서 대리인을 사용할 수 있습니까? 내 메서드 호출의 유일한 차이점은 메서드 내에서 이름과 GetXFont() 호출입니다.
public static PdfPCell GetCell(string strText, Func<Font> fontCreator)
{
PdfPCell cell = new PdfPCell(new Phrase(strText, fontCreator()));
cell.Border = 0;
return cell;
}
var cell = GetCell("...",() => GetDefaultFont());
그런데 왜 당신은 단순히 방법에 직접 폰트를 통과하지 :
내 가장 큰 문제는 그것이 완료되어야 할 횟수라고 생각합니다. PDF는 거대하고 앞으로도 계속 커질 것입니다. 앞으로도 변화를 허용하면서이 셀의 스타일을 가능한 한 게으르도록 노력하고 있습니다. 이 두 가지 모두 내 질문에 답하지만 내 게으름을 만족시킬 방법이 있습니까? –
코드를 어떻게 보이게 할 수 있는지 예를 들려 줄 수 있습니까? IMO 내 두 번째 해결책은 꽤 예쁘다. – dtb
가 동의했습니다. 나는 메신저 델리게이트와 함께가는 것 같아서 폰트를 잠재적으로 수천 가지가 아닌 메서드 호출에서 한 번만 변경하면된다. –