Phase 3: HTML(WebView2) + HWP/HWPX(LibreOffice) 실구현
HTML / HTM - HtmlProvider: STA 스레드 + WPF Dispatcher에서 WebView2 헤드리스 컨트롤러(HWND_MESSAGE) 생성 - CDP Page.captureScreenshot(captureBeyondViewport=true)으로 풀페이지 PNG 획득 - Magick.NET으로 JPEG 인코드, 알파/리사이즈/품질 옵션 일관 적용 - ConvertOptions: HtmlViewportWidth/Height, HtmlWaitMilliseconds, HtmlFullPage HWP / HWPX - HwpxProvider: LibreOffice headless --convert-to pdf + H2Orestart 확장 자동 감지 - DocxProvider 패턴 재사용 (소스→PDF→PdfProvider 위임) - ExternalToolDetector.IsH2OrestartInstalled — uno_packages/extensions 검색 기타 - Core csproj: UseWPF=true (WebView2가 WPF 의존), Microsoft.Web.WebView2 1.0.3912.50 추가 - AppX 매니페스트에 .html/.htm/.hwp/.hwpx ItemType 추가 - 파일 다이얼로그 필터 확장 - 두 ComingSoon 상태였던 Provider가 이제 Available/RequiresExternal로 노출됨 검증 - 솔루션 Release 빌드 통과 - MSIX 38개 페이로드 패키징 성공 (WebView2 SDK 포함) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
f2c8610ff6
commit
5750aed16f
9 changed files with 366 additions and 26 deletions
|
|
@ -48,4 +48,38 @@ internal static class ExternalToolDetector
|
|||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static bool IsH2OrestartInstalled()
|
||||
{
|
||||
try
|
||||
{
|
||||
var roots = new[]
|
||||
{
|
||||
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
|
||||
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
|
||||
};
|
||||
foreach (var root in roots)
|
||||
{
|
||||
if (string.IsNullOrEmpty(root)) continue;
|
||||
var loDir = Path.Combine(root, "LibreOffice", "4", "user", "uno_packages", "cache", "uno_packages");
|
||||
if (Directory.Exists(loDir))
|
||||
{
|
||||
foreach (var dir in Directory.EnumerateDirectories(loDir, "*H2Orestart*", SearchOption.AllDirectories))
|
||||
{
|
||||
if (Directory.Exists(dir)) return true;
|
||||
}
|
||||
}
|
||||
var extDir = Path.Combine(root, "LibreOffice", "4", "user", "extensions", "bundled");
|
||||
if (Directory.Exists(extDir))
|
||||
{
|
||||
foreach (var dir in Directory.EnumerateDirectories(extDir, "*H2O*", SearchOption.AllDirectories))
|
||||
{
|
||||
if (Directory.Exists(dir)) return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch { }
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue