2016-09-26 2 views
1

iTextSharp를 사용하여 간단한 PDF 파일을 만듭니다. 잘 작동하고 있습니다.글꼴 인스턴스 : 다른 글꼴 스타일로 문서 작성을 단순화하는 방법

이제 사용자가 스타일이나 테마를 변경할 수 있기를 바랍니다. 사용자는 Normal, Elegant, Modern 등의 대화 상자에서 PDF를 선택하고 원하는 스타일이나 테마에 맞게 PDF의 일부 글꼴을 변경해야합니다. PDF로이 서브를 만들

같은 뭔가를 :

ActualLetter이

A, B, C가 ... (SQLite는 데이터베이스에서 읽기, 아무런 문제가 오순절이) 같은 단지 문자

'Define fontLetterSeparator 
Dim fontLetterSeparator As New Font(BaseFont.CreateFont("c:/windows/fonts/comic.ttf", BaseFont.WINANSI, BaseFont.EMBEDDED), 18) 

'Define letter separator paragraph 
Dim letterSeparator As New Chunk(ActualLetter, fontLetterSeparator) 

나는 때문에 글꼴 불변 조건의 생각, 내가 3 개 스타일이나 테마를 관리 할 수 ​​있다고 생각하는 한 가지 방법은

If PDFTheme = "Normal" Then 
    Dim fontLetterSeparator As New Font(BaseFont.CreateFont("c:/windows/fonts/arial.ttf", BaseFont.WINANSI, BaseFont.EMBEDDED), 20) 
End If 

If PDFTheme = "Elegant" Then 
    Dim fontLetterSeparator As New Font(BaseFont.CreateFont("c:/windows/fonts/verdana.ttf", BaseFont.WINANSI, BaseFont.EMBEDDED), 20) 
End If 

If PDFTheme = "Modern" Then 
     Dim fontLetterSeparator As New Font(BaseFont.CreateFont("c:/windows/fonts/comic.ttf", BaseFont.WINANSI, BaseFont.EMBEDDED), 60) 
End If 

같은 코드입니다하지만이 작동하지 않았다. 그래서 솔루션 (3 개) 새로운 글꼴 또는 새로운 인스턴스 대신

Dim fontLetterSeparatorNormal As New fontLetterSeparator 
fontLetterSeparatorNormal.Name = "Arial" 

Dim fontLetterSeparatorElegant As New fontLetterSeparator 
fontLetterSeparatorElegant.Name = "Verdana" 

Dim fontLetterSeparatorModern As New fontLetterSeparator 
fontLetterSeparatorModern.Name = "Comic" 

등 크기 조건하지만 지금은 다른 블록을 필요로하기 때문에이

'Define letter separator paragraph 
'Dim letterSeparator As New Chunk(ActualLetter, fontLetterSeparator) 

더 복잡 원래의 라인을 만들어 함께 생각 삼 경우 - 그럼 난 더 간단하고 깔끔한 해결책이 될하지만

을 알아낼 할수 없어거야있을거야 각 스타일 또는 테마에 맞는 글꼴 ...

을 선택합니다

+1

,하지만 당신은 당신이 선언 * A) * 곳 (딤섬은, 개인, 공공는) 변수가 결정한다는 알아야 할' 범위'; b) 들여 쓰기를하는 모든 것은 블록 범위를 만듭니다 (두 번째 예는 그 글꼴이 If 내부에만 존재 함). Dim/Private을 사용하여 새로운 것을 사용할 필요가 없습니다 - 한 레벨에서 선언하고 다른 레벨에서 초기화 할 수 있습니다. 오인성이 아니라면 불변 성이 무엇인지 잘 모르겠습니다. – Plutonix

+0

@Plutonix Scope !!! 나는 블록 안의 Dim의 범위를 알지 못했습니다! – fedeteka

+1

범위의 문제 였기 때문에 나는이 문제를 연계 된 응답의 속임수로 닫을 것입니다 - 주요 문제는 완전히 명확하지 않았습니다. 다른 대답은보다 완전한 답을 가지고 있습니다. 도움이된다면 upvote하십시오. – Plutonix

답변