그래서, ASP.Net MVC 프로젝트의 관리되지 않는 Win32 Ghostscript DLL에 대한 간단한 C# 래퍼 인 Matthew Ephraim's GhostscriptSharp을 사용하고 있습니다. 일부 배경 :Ghostscript가 -100의 오류를 반환하게하는 원인은 무엇입니까?
내가 시도한 것은 사용자가 PDF를 업로드 한 다음 해당 문서를 내가 선택한 디렉토리에 저장할 수있는 이미지로 변환하는 것입니다 (뿐만 아니라 다른 OOP를 묶어 야합니다 새 이미지를 내 사이트로 가져옴).
Ephraim 씨의 래퍼 클래스 (GhostscriptSharp)를 사용하기에 충분히 간단하기 때문에 사용하기가 쉽고 DLL API에 대한 비교적 깨끗한 액세스를 제공합니다.
테스트를 위해 DLL을로드하고 액세스하고 로컬 디스크에 PDF 파일을 전달한 다음 동일한 로컬 디스크에 JPG를 기록하도록 더미 C# 콘솔 응용 프로그램을 만들었습니다. 약간의 학습 경험 후, 나는 성공했다. 나는 그것을 C : \ INPUT.pdf라고 할 것이고, C : \ OUTPUT.jpg를 나에게 건네 줄 것이다.
그러나 콘솔 응용 프로그램에 있던 GhostScriptSharp 코드를 내 ASP.NET MVC 프로젝트에 통합하여 P/invoke로 DLL을 호출 한 지점으로 Ghostscript가 int/error 코드 -100
과 함께 반환됩니다 이는 치명적인 오류입니다 (GhostScript 소스 코드에서 E_Fatal
). HTML 폼을 통해 업로드 된 파일과 동일한 작업 결과를 얻었습니다. 작업 콘솔 응용 프로그램에서 사용한 것과 동일한 하드 코딩 된 경로를 전달하면됩니다. 참고로
, 예외가 발생 된 라인 (CallApi
함수이다) GhostScriptSharp.cs에서 93-97 같습니다 result
가 -100
때문에
int result = InitAPI(gsInstancePtr, args.Length, args);
if (result < 0) {
throw new ExternalException("Ghostscript conversion error", result);
}
분명 예외가 발생된다.
InitAPI가 호출 될 때 인스턴스 ptr은 유효한 int
(GS의 인스턴스가 맞는지 여부는 모르겠지만)이고 args의 길이는 유효한 GhostScript 옵션 20 자 (string[]
)입니다 내 입력 & 출력 파일에 올바르게 이스케이프 된 경로 포함).
길게 짧게, 내가 뭘 잘못하고 있니? 오류 코드 -100
은 잡동사니처럼 보입니다. 여기에 잘못 될 수있는 내용을 설명하는 문서가 없기 때문입니다.
도움을 주시면 감사하겠습니다. 미리 감사드립니다.
하나, 로컬 사용자의 권한으로 작동하는 ASP.Net 개발 서버로 웹 응용 프로그램을 실행하고 있다면 로컬 컴퓨터의 관리자이고 그 파일은 ... 둘째, 이전에 GhostscriptSharp를 사용하기 전에 응용 프로그램에서 PDF와 JPG가 들어있는 특정 디렉토리가 만들어지기 때문에 올바른 쓰기 권한이 있다는 것을 나타낼 수 있습니까? – Mattygabe
@Mattygabe - 당신이 카시니에서 뛰는 한 사실입니다. 무엇이 문제 일 수 있는지 확실하지 않습니다. – tvanfosson