2011-12-30 2 views
1

일부 html 페이지를 PDF로 렌더링하기 위해 ABCpdf 버전 5를 사용하고 있습니다. ABCpdf 5 인코딩 문제 (특수 문자)

System.IO.StringWriter writer = new System.IO.StringWriter(); 
server.Execute(requestUrl, writer); 
string pageResult = writer.ToString(); 

WebSupergoo.ABCpdf5.Doc pdfDoc = new WebSupergoo.ABCpdf5.Doc(); 
pdfDoc.AddImageHtml(pageResult); 

response.Buffer = false; 
response.ContentType = "application/pdf"; 
response.AddHeader("Content-Disposition", "attachment;filename=MyPdf_" + 
    FormatDate(DateTime.Now, "yyyy-MM-dd") + ".pdf"); 
response.BinaryWrite(pdfDoc.GetData()); 

지금 Umlaute (AOU) 같은 일부 특수 문자는 빈 공간으로 대체됩니다 PDF 파일의 HTML을 검색하기 위해 방법 -

나는 기본적으로 HttpServerUtility.Execute()를 사용합니다. 흥미롭게도 그들 모두는 아닙니다. 내가 뭘했는지 알아 내면 : 내가 가진 html 페이지 안에.

`<meta http-equiv="content-type" content="text/xhtml; charset=utf-8" />` 

이 구문을 분석하면 모든 특수 문자가 올바르게 렌더링됩니다. 하지만 이것은 추한 해킹처럼 보입니다.

이전에는 HttpServerUtility.Execute()을 사용하지 않았지만 ABCpdf가 URL 자체를 호출하도록했습니다 : pdfDoc.AddImageUrl("someUrl");. 거기 엔 그런 인코딩 문제가 없었습니다.

다른 시도를 할 수 있습니까?

+0

ABCpdf Verion 7에는이 문제가없는 것으로 나타났습니다. – sl3dg3

답변

5

ABCpdf 8으로이 문제가 발생했습니다.

코드에서 HTML 내용을 검색하고 pageResult를 AddImageHtml()에 전달합니다. documentation 상태로,

ABCpdf 임시 파일에이 HTML을 저장하고 사용하여 파일 렌더링 '파일 : //'프로토콜을 지정합니다.

언급되지 않은 점은 임시 파일이 UTF-8로 인코딩되었지만 인코딩이 HTML 파일에 명시되지 않았다는 것입니다.

< 메타> 태그는 실제로 필요한 인코딩을 설정하고 내 문제를 해결했습니다.

인코딩 선언을 피하는 한 가지 방법은 HTTP/HTML 응답에서 HTML 인코딩을 감지 할 것으로 예상되는 AddImageUrl() 메서드를 사용하는 것입니다.

0

인코딩 메타 태그 및 AddImageURL 메서드는 단순한 문서에서는 도움이되지만 인코딩 태그에도 불구하고 인코딩이 어떻게 든 손실되는 체인 상황에는 도움이되지 않습니다. 나는이 문제를 겪었다. (정확하게 원래의 질문에 묘사 된 것처럼 - 움라우트와 같은 일부 외국 문자는 사라질 것이다. 나는 ABCPDF를 없애고 PDF 형식을 렌더링 할 수있는 SSRS로 대체하는 것을 고려 중입니다.