2013-08-28 2 views
1

Я пишу с открытым исходным кодом C# Ghostscript обертка. Вы можете попробовать и посмотреть (http://ghostscriptnet.codeplex.com). Большая часть функциональности реализована и работает в обеих версиях (x86/x64). Проблема, с которой я сталкиваюсь, - это когда я инициализирую устройство отображения для визуализации pdf непосредственно на экран (я успешно реализовал gsapi_set_display_callback callback).C# и Ghostscript 64bit

Аргументы, которые я использую следующие:

string[] args = new string[] { 
    "", 
    "-sDEVICE=display", 
    "-dTextAlphaBits=4", 
    "-dGraphicAlphaBits=4", 
    "-dDisplayHandle=1234", 
    "-dDisplayResolution=72", 
    "-dDisplayFormat=" + ((int)DISPLAY_FORMAT_COLOR.DISPLAY_COLORS_RGB | 
          (int)DISPLAY_FORMAT_ALPHA.DISPLAY_ALPHA_NONE | 
          (int)DISPLAY_FORMAT_DEPTH.DISPLAY_DEPTH_8 | 
          (int)DISPLAY_FORMAT_ENDIAN.DISPLAY_LITTLEENDIAN | 
          (int)DISPLAY_FORMAT_FIRSTROW.DISPLAY_BOTTOMFIRST).ToString() }; 

Эти аргументы хорошо работает на 32-разрядной версии и я в состоянии оказать Pdf страницу на экран. Инициализация работает нормально.

Когда я переключиться на 64-битной версии я получаю typecheck (e_typecheck = -20) сообщение об ошибке.

Я знаю, что 64-разрядная версия использует -sDisplayFormat, и я тоже пробовал это, но не повезло.

Кто-нибудь знает, как инициализировать устройство как отображение в 64-битной версии Ghostscript library? Я не думаю, что что-то упускаю. Это ошибка в 64-битной версии библиотеки ghostscript?

Я пробовал более ранние версии библиотеки Ghostscript, и я получаю такую ​​же ошибку в 64-битной версии.

Текущая версия, используемая мной 9.09. Класс, где вы можете взглянуть на код: Ghostscript.NET.Viewer.GhostscriptViewer.cs

ответ

0

Решено. Первая проблема заключалась в том, что для 64-разрядной версии -sDisplayHandle необходимо использовать, поскольку значение передается в строке string. Использование 32-разрядной версии -dDisplayHandle (числовое значение). Вторая проблема заключалась в том, что у меня был StructureLayout Pack = 1. 64-разрядная версия должна быть 0.