2014-12-23 2 views
1

나는 PdfSharp/Migradoc를 사용하여 C#에서 PDF 파일을 생성했습니다. 이제 pdf 파일 안에 문서 링크를 추가하려고했습니다. 기본적으로 항목 테이블을 만들고 탐색 할 항목 이름을 클릭합니다. 다른 세부 정보 페이지로 이동하십시오. 나는Migradoc의 pdf에 문서 링크 추가

Paragraph p = cell.AddParagraph(); 

          Hyperlink link = p.AddHyperlink(tmp_value, HyperlinkType.Bookmark); 
          link.AddText(tmp_value); 
          link.AddPageRefField(some_bookmark); 

내 문제에 사용되는 코드는이 탐색 페이지를 북마크가 나중에 생성되기 전에 실행 후, 링크가 등장하지 않는, 생성되는가요 아래에 Migradoc Paragraph.AddHyperlink() 메소드를 사용하려고 "[item name] 북마크 [some_bookmark]가 정의되어 있지 않습니다"와 같은 오류 메시지 만 표시됩니다. 누구든지 내게 이것을 강조 할 수있는 적절한 방법이 무엇인지 강조 할 수 있습니까? 감사.

답변

3

점프 대상으로 paragraph.AddBookmark(tmp_value);과 같은 것이 필요합니다. 이것이 오류 메시지가 말하는 것입니다 : 대상 책갈피가 정의되지 않았습니다.

MigraDoc은 PDF를 두 번 통과 시키며 문서에서 대상이되는 위치는 중요하지 않습니다.

link.AddPageRefField(some_bookmark); 북마크 "some_bookmark"가있는 페이지의 페이지 번호를 추가합니다. 그 목적은 무엇입니까?

은 참조 :
http://pdfsharp.net/wiki/HelloMigraDoc-sample.ashx

Hyperlink hyperlink = paragraph.AddHyperlink("Paragraphs"); 
    hyperlink.AddText("Paragraphs\t"); 
    hyperlink.AddPageRefField("Paragraphs"); 

첫 번째 줄은 대상 정의 - 문서의 다른 곳에서 AddBookmark로 정의 된 문자열입니다. 두 번째 줄은 링크에 표시된 텍스트를 제공합니다. 세 번째 행은 페이지 번호를 링크에 추가합니다.

+0

설명을 주셔서 감사합니다. 대상 및 참조 페이지가 동일한 책갈피를 가리켜 야합니다. 다음 질문은 링크를 만들기 전에 하이퍼 링크에 사용 된 책갈피를 정의해야합니까? –

+0

PDF를 렌더링 할 때 대상이 있어야합니다. 링크를 만들면 MigraDoc은 검사를 통과하지 않고 전달한 문자열 만 저장합니다. 링크를 추가하기 전에 대상을 생성 할 필요가 없습니다 (링크 된 MigraDoc 샘플도이 순서대로 수행합니다). –

+0

안녕하세요 @ ThomasH, 어디에서 내 문제를 MigraDoc를 사용하여 테이블을 만들고 각 페이지에서 여러 페이지를 교차, 내가 RenderPage(), 그렇지 않으면 그것은 최종 PDF에서 빈 (내가 왜), 그래서 문제가, 렌더링 중에 링크 정의에 사용 된 책갈피를 찾을 수 없습니다. 내 책갈피는 이후 페이지에서만 정의되므로이 문제점을 해결하는 데 대한 아이디어를 줄 수 있습니까? 감사. –