pdfJet для .net - pdf.Flush (); - это дает мне ошибку при попытке примера - PullRequest
0 голосов
/ 17 мая 2011

1) При вызове функции PInvoke 'PDFjet! PDFjet.NET.OptionalDeflateStream :: compress' разбалансирован стек.Это вероятно потому, что управляемая подпись PInvoke не совпадает с неуправляемой целевой подписью.Убедитесь, что соглашение о вызовах и параметры подписи PInvoke соответствуют целевой неуправляемой подписи.

Что это?Если я удаляю zlibwapi.dll из той же папки, что и сборка PdfJet, я получаю: 2) Невозможно загрузить DLL 'zlibwapi.dll': указанный модуль не найден.(Исключение из HRESULT: 0x8007007E) (обратите внимание, что я не добавляю ссылку на эту сборку, я только копирую ее в папку Debug и получаю error1)

code:

   `static void Main(string[] args)
    {
        FileStream fos = new FileStream("Example_05.pdf", FileMode.Create);
        BufferedStream bos = new BufferedStream(fos);

        PDF pdf = new PDF(bos);
        pdf.setCompressor(Compressor.ORIGINAL_ZLIB);

        // Before you enable this flag please read README.ZLIB.TXT
        // in the 'optional' directory.

        // If PDF/A is not required use Helvetica, TimesRoman or Courier
        Font f1 = new Font(pdf, "Helvetica");
        /*
                Font f1 = new Font(pdf,
                        new FileStream(
                                "fonts/DroidFonts/DroidSans.otf", FileMode.Open),
                        CodePage.UNICODE,
                        Embed.YES);
        */
        Page page = new Page(pdf, Letter.PORTRAIT);

        TextLine text = new TextLine(f1);
        text.SetPosition(300.0, 300.0);
        for (int i = 0; i < 360; i += 15)
        {
            text.SetTextDirection(i);
            text.SetUnderline(true);
            // text.SetStrikeLine(true);
            text.SetText("             Hello, World -- " + i + " degrees.");
            text.DrawOn(page);
        }

        text = new TextLine(f1, "WAVE AWAY");
        text.SetPosition(70.0, 50.0);
        text.DrawOn(page);

        f1.SetKernPairs(true);
        text.SetPosition(70.0, 70.0);
        text.DrawOn(page);

        f1.SetKernPairs(false);
        text.SetPosition(70.0, 90.0);
        text.DrawOn(page);

        f1.SetSize(8);
        text = new TextLine(f1, "-- font.SetKernPairs(false);");
        text.SetPosition(150.0, 50.0);
        text.DrawOn(page);
        text.SetPosition(150.0, 90.0);
        text.DrawOn(page);
        text = new TextLine(f1, "-- font.SetKernPairs(true);");
        text.SetPosition(150.0, 70.0);
        text.DrawOn(page);

        Point point = new Point(300.0, 300.0);
        point.SetShape(Point.CIRCLE);
        point.SetFillShape(true);
        point.SetColor(RGB.BLUE);
        point.SetRadius(37.0);
        point.DrawOn(page);
        point.SetRadius(25.0);
        point.SetColor(RGB.WHITE);
        point.DrawOn(page);

        pdf.Flush();
        bos.Close();
    }`

note: код является точным примером, представленным на веб-сайте pdfJet: pdfjet

Ответы [ 2 ]

0 голосов
/ 19 мая 2011

удалено pdf.setCompressor (Compressor.ORIGINAL_ZLIB); и это работает

0 голосов
/ 17 мая 2011

Из вашего (образца) кода:

// Before you enable this flag please read README.ZLIB.TXT
// in the 'optional' directory.

Из файла README.ZLIB.TXT ...:

.NET версия PDFjet использует DeflateStream принадлежит фреймворк. DeflateStream однако делает не сжимать данные, а также оригинальная библиотека zlib.

Если вы используете PDFjet на 32-битной версия Windows и хотите ее создавать меньшие файлы PDF - копировать zlibwapi.dll в тот же каталог где установлен PDFjet.dll.

Когда zlibwapi.dll не используется PDFjet это 100% чистый управляемый код. когда zlibwapi.dll используется - вы поправляетесь сжатие и файлы PDF меньшего размера.

Акцент мой. Значит, вы на 32-битной версии? И вам абсолютно необходимо неуправляемое сжатие, и вы не можете просто вернуться к управляемому?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...