2017-10-03 72 views
1

나는 레거시 코드로 작업 중이라는 생각을하기 전에 이렇게 이상적인 상황에서 살아야하므로 약간의 기발한 일을하고 있습니다. 재발급 승인을받을 때까지는 기한 내야합니다.PostScript - Ghostscript "pdfwrite"를 사용할 때의 오류

상황은 여기 내 상황입니다. 응용 프로그램은 SQL 데이터베이스를보고한다는 점에서 간단합니다. 더 좋든 나쁘 든간에 그것은 포스트 스크립트로 보고서를 만듭니다. Ghostscript dll을 사용하여 응용 프로그램 디렉토리에 임베드했습니다. 여기 키커가 있습니다. 출력물이 이미 PDF 형식 인 SSIS 보고서를 포함시켜야합니다. 호환성을 위해 대부분의 상황에서 나중에 PDF로 변환 될지라도이 PDF를 포스트 스크립트로 변환해야합니다. 나는 이것이 가장 나쁜 디자인 일 가능성이 있음을 알고 있지만 이것을 요구하는 특정 기능이 있으며 당분간은 그대로이다. GhostScript를 사용하여 변환을 처리하고 있습니다.

관찰 된 행동을 다음 동작은 PDF가 PS로 변환되면 응용 프로그램을 통해 전달, 관찰하고 PDF로 다시 변환되는 것입니다.

"sDevice = pswrite"를 사용할 때 해상도 옵션을 tweek하는 방법에도 불구하고 보고서가 열악한 해상도로 컴파일된다는 것을 제외하면 모든 것이 작동합니다.

"sDevice = ps write"를 사용하면 현재 허용 된 프로토콜로 인식되며 PDF는 렌더링되지 않고 다음 오류가 발생합니다.

ERROR: 
undefined 
OFFENDING COMMAND: 
U1!‘WVt92\a 
STACK: 
--nostringval-- 
20 

위 오류는 웹 클라이언트를 통해 액세스하는 보고서 서버의 보고서를 사용할 때만 발생합니다. PDF가 성공적으로 반환되고 손상되지 않았 음을 확인할 수 있습니다.

응용 프로그램에서 로컬 SSIS 패키지를 실행하면 생성 된 PDF를 성공적으로 처리 할 수 ​​있습니다. pswrite가 생산

%!PS-Adobe-3.0 
%%BoundingBox: 0 0 612 792 
%%Creator: GPL Ghostscript 905 (ps2write) 
%%LanguageLevel: 2 
%%CreationDate: D:20171003154139-05'00' 
%%Pages: 3 
%%EndComments 

다음과 같이

망하는 PDF가 PS2Write에게 코멘트를 사용하여 PS로 변환됩니다 채워집니다 내가 의심하고

%!PS-Adobe-3.0 
%%Pages: (atend) 
%%BoundingBox: 21 30 761 576 
%%HiResBoundingBox: 21.600000 30.400000 760.566016 575.100000 
%..................................... 
%%Creator: GPL Ghostscript 905 (pswrite) 
%%CreationDate: 2017/10/03 15:53:40 
%%DocumentData: Clean7Bit 
%%LanguageLevel: 2 
%%EndComments 
%%BeginProlog 

의혹

중 하나를 PDF 그 PostScript로 변환 할 수없는 호환되지 않는 표준에 있습니다. 예를 들어, 처리 할 수없는 최신 PDF 버전. 또는 글꼴이나 img와 같이 호환되지 않는 무언가가 포함되어있을 수도 있습니다.

어쨌든 이것을 사냥 할만한가? 누구도 비슷한 상황을 겪었으며 해결책은 무엇입니까? 조사 할 대상 또는 시도 할 대상에 대한 지침이 있습니까?

+0

전환에 사용 된 전체 명령을 양방향으로 게시 할 수 있습니까? – milivojeviCH

답변

3

사실 원래 PDF 파일을 보지 않고는 아무도 도움을받을 수 없습니다. 더미 파일조차도 오류를 나타내는 한 괜찮습니다.

그러나 마음에 가장 먼저 떠오르는 것은 Ghostscript 9.05를 사용하고있는 것으로 보입니다. 현재 5 살이며, 현재 릴리스는 9.22 정도입니다.해당 시간에 ps2write에 수많은 개의 수정 사항이 있었으며, 적어도 50 개 이상이 수정되었습니다. 먼저 업그레이드를 제안하고 문제가 없는지 확인하십시오.

둘째, 왜 PDF 파일을 PostScript로 변환해야하는지 명확하지 않습니다. 어셈블리를 PDF로 변환하기 위해 Ghostscript와 PostScript를 함께 제공하는 경우, PDF 파일을 먼저 PostScript로 변환 할 필요가 없습니다. Ghostscript는 전적으로 PDF와 PostScript 파일을 혼합 할 수 있으므로 SQL 출력의 PostScript 사이에 PDF를 삽입하면 단일 PDF를 생성 할 수 있습니다.

여기에는 여러 가지 장점이 있습니다. 가장 먼저 분명히, 당신은 당신의 전환 문제를 가져서는 안됩니다. 두 번째로, PDF 파일에서 PostScript로 표현할 수없는 (투명도 등) 모든 구성은 내용이 이미지에 렌더링되고 PostScript에 단순히 큰 비트 맵이 포함된다는 것을 의미합니다. pswrite 출력과 마찬가지로 변환이 발생하지 않도록 피하십시오. 세 번째로 먼저 모든 PDF 파일을 PostScript로 변환하는 것보다 빠릅니다.

절대적으로 그렇게 할 수 없다면, 현재 코드를 시도해보고 더 나은지 확인하십시오. 그렇지 않다면 버그를 발견 했으므로 https://bugs.ghostscript.com에 버그를 발견했다고 제안하면 예제 파일과 명령 줄을 제공 할 수 있어야합니다.

+0

나는 두 가지 일을했다. 1) 9.22로 업데이트했습니다. 2) 단일 출력을 생성하기 위해 GhostScript 내부에 pdf와 postscript를 혼합 할 수 있다는 것을 알지 못했습니다! 이것은 트릭을했다. – LCaraway