LotusScript가있는 노트에서 풍부한 텍스트 필드를 HTML로 내보내는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1880511

문제

데이터 마이그레이션 작업을 수행하고 있는데, 여기서 다소 큰 Lotus Notes 응용 프로그램을 블로깅 플랫폼으로 내보내야합니다. 첫 번째 작업은 Lotus Notes의 기사를 CSV 파일로 내보내는 것이 었습니다.

데이터를 CSV 파일로 내보내기 위해 lotusscript에 에이전트를 만들었습니다. 나는 이것의 수정 된 버전을 사용합니다 IBM DeveloperWorks Forum Post. 그리고 그것은 기본적으로 일을합니다. 그러나 풍부한 텍스트 필드의 내용은 모든 형식으로 제거되었습니다. 그리고 이것은 내가 원하는 것이 아니며, 풍부한 텍스트 필드를 HTML로 렌더링하고 싶습니다.

그만큼 getItemValue에 대한 문서화 메소드는 텍스트가 일반 텍스트로 렌더링된다는 것을 명시 적으로 나타냅니다. 그래서 나는 HTML을 검색 할 무언가를 연구하기 시작했습니다. IBM 기사에서 NotesMimeEntity 클래스와 일부 샘플 코드를 찾았습니다. lotusscript를 사용하여 풍부한 텍스트 필드에서 HTML에 액세스하는 방법.

그러나 위의 기사에 설명 된 기술이 작동하기 위해서는 풍부한 텍스트 필드에 "내용을 HTML 및 MIME로 저장"해야합니다. 그리고 이것은 내 Lotus Notes 데이터베이스의 경우에는 해당되지 않습니다. 문제의 필드에 속성을 설정하려고했지만 속임수를하지 않았습니다.

컨텐츠가 추가 된 후 NotesMimeEntity를 사용하고 "저장 내용을 HTML 및 MIME"속성으로 설정하여 HTML로 렌더링 된 필드를 내보내기 위해 가능합니까?

또는 노트 데이터베이스를 HTML로 내보내는 옵션은 무엇입니까?

보너스 정보 : IBM Lotus Domino 디자이너 버전 8.5를 사용하고 있습니다.

도움이 되었습니까?

해결책

Midas의 풍부한 텍스트 LSX를 보는 것이 좋습니다.http://www.geniisoft.com/showcase.nsf/midaslsx)

나는 개인적으로 사용하지 않았지만 몇 년 전부터 풍부한 텍스트로 작업하기위한 최선의 선택이라는 것을 기억합니다. 나는 그것이 당신에게 많은 두통을 절약 할 것이라고 확신합니다.

NotesMimeEntity 클래스의 경우 RichText를 MIME으로 변환하는 방법이 없다고 생각합니다.

다른 팁

원하는 것을 정확하게 수행하는이 알려지지 않은 명령이 있습니다. OpenField 명령을 사용하여 URL을 검색하십시오.

바디 필드 만 변환하는 예 :

http://SERVER/your%5Fdatabase%5Fpath.nsf/NEW%5FVIEW/docid/Body?OpenField

Notes Domino 8.5.1로 업그레이드하면 New를 사용할 수 있습니다. ConvertToMIME 방법의 방법 NotesDocument 수업. 참조 문서. 이것은 당신이 원하는 것을해야합니다.

또는 Domino 서버가 RichText를 렌더링하는 가장 쉬운 방법은 실제로 URL 호출을 통해이를 검색하는 것입니다. RichText 필드가있는 간단한 양식을 설정 한 다음 좋아하는 HTTP API를 사용하여 페이지를 가져 오십시오. 그런 다음 몸을 꺼내려면 매우 간단해야합니다.

오픈 필드 명령을 사용하여 위의 D.Bugger의 게시물을 참조하십시오.

Function GetHtmlFromField(doc As NotesDocument, fieldname As String) As String
    Dim obj
    Set obj = CreateObject("Microsoft.XMLHTTP")
    obj.open "GET", "http://www.metz.dk/shops/tilbud.nsf/0/" + doc.Universalid + "/" + fieldname + "?openfield&charset=utf-8", False, "", ""
    obj.send("")

    Dim html As String
    html = Trim$(obj.responseText)

    GetHtmlFromField = html
End Function

NotesDXLEXPORTER 클래스를 사용하여 풍부한 텍스트를 내보내고 XSLT를 사용하여 출력을 필요한 것으로 변환 할 수 있습니다.

나는 당신이 lotusscript를 사용하는 것을 언급했음을 알고 있지만, 작은 Java 에이전트 (노트 클라이언트에서)를 쓰지 않는다면 상당히 쉽게 수행 할 수 있으며 기존 양식 설계를 수정할 필요가 없습니다.

기본 아이디어는 Java 코드가 LocalHost HTTP 요청 (Java에서 간단함)을 통해 특정 문서를 열고 HTML을 출력하여 해당 문서로 다시 저장하는 코드를 캡처하도록하는 것입니다. 기본적으로 도미노 렌더링 엔진이 무거운 리프팅을하도록 허용합니다.

당신은 이것을 원할 것입니다 :

  1. 변환하려는 Rich-Text 필드 만 포함 된 양식 및 HTML의 컨텐츠 유형으로 형식을 만듭니다.
  2. 변환하려는 모든 문서에 대한 선택 공식과 새 형식으로 계산되는 양식 공식으로보기를 만듭니다.
  3. 당신의 견해를 걷는 Java 에이전트를 만들고 각 문서마다 문서를 얻고 양식에서 URL을 엽니 다. http : //server/your_database_path.nsf/new_view/docid? opendocument, HTTP 응답을 잡고 저장합니다.

여기에 비슷한 게시물에 샘플 코드를 넣었습니다.

문서의 텍스트와 풍부한 텍스트 필드를 LotusScript를 사용하여 HTML로 변환하는 방법은 무엇입니까?

간단하게 유지하십시오.

내용물을 HTML 및 MIME로 저장하도록 바디 필드를 변경하십시오.

editMode에서 문서를 엽니 다. 구하다. 닫다.

이제 NotesMimeEntity를 사용하여 스크립트에서 필요한 것을 얻을 수 있습니다.

Casper의 추천 위의 권장 사항은 잘 작동하지만 ACL이 익명 액세스를 허용하는지 확인하십시오. 그렇지 않으면 HTML이 로그인 양식에서 HTML이됩니다.

구체적으로 항목에서 Richtext를 얻을 필요가 없다면, 여기에 문서화 된 OpenDocument를 사용할 수 있습니다. https://www.ibm.com/developerworks/lotus/library/ls-domino_url_cheat_sheet/ https://www.ibm.com/support/knowledgecenter/ssvrgu_9.0.1/com.designer.domina.main.doc/h_about_url_commands_for_opening_documents_by_key.html

OpenDocument는 또한 섹션을 확장 할 수 있습니다 (Openfield가 있는지 확실하지 않습니다)

구문은 다음과 같습니다.http : // host/database/view/documentuniversalid? opendocument

그러나 charset 매개 변수도 포함시켜야합니다. charset로 UTF -8을 지정하지 않고는 일본어 문서를 읽을 수 없었습니다.

다음은 NotesDocument를 사용하여 문자열로 문서로 HTML을 반환하는 방법입니다.

    private string ConvertDocumentToHml(Domino.NotesDocument doc, string sectionList = null)
    {
        var server = doc.ParentDatabase.Server.Split('/')[0];
        var dbPath = doc.ParentDatabase.FilePath;
        string viewName = "0";
        string documentId = doc.UniversalID.ToUpper();

        var ub = new UriBuilder();
        ub.Host = server;
        ub.Path = dbPath.Replace("\\", "/") + "/" + viewName + "/" + documentId;

        if (string.IsNullOrEmpty(sectionList))
        {
            ub.Query = "OpenDocument&charset=utf-8";
        }
        else
        {
            ub.Query = "OpenDocument&charset=utf-8&ExpandSection=" + sectionList;
        }

        var url = ub.ToString();

        var req = HttpWebRequest.CreateHttp(url);
        try
        {
            var resp = req.GetResponse();
            string respText = null;

            using (var sr = new StreamReader(resp.GetResponseStream()))
            {
                respText = sr.ReadToEnd();
            }
            return respText;
        }
        catch (WebException ex)
        {
            return "";
        }
    }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top