Заменить контент в PDF "бинарным" и сохранить - vb.net - PullRequest
0 голосов
/ 06 августа 2011

Мне нужно добавить некоторую информацию в PDF (пропорции Trim Box, фактически заменить пропорции Media Box на пропорции Media Box и Trim Box), и у меня нет поддержки в моем PDF-двигателе. Итак, я обнаружил, что могу использовать Notepad ++, чтобы открыть PDF-файл как текстовый файл и просто добавить пропорции Trim Box в виде строки и сохранить ее. Теперь я хочу сделать это автоматически с vb.net. Когда я использую Stream Reader / Writer, PDF-файл разрушается и теряет информацию (я полагаю, Stream Reader не читает все NUL, SOH, STX и т. Д.). Я попытался прочитать PDF, используя ReadAllBytes / WriteAllBytes, и тогда он хорошо работает, но потом я не знаю, как заменить «Media Box ...» на «Media Box ... Trim Box ...». Я пытаюсь использовать IndexOf, но я могу искать только один байт, а не всю строку. Я не очень хорош в двоичном коде, и это, возможно, проблема :-). У кого-нибудь есть лучший способ сделать это или как мне найти мою строку «Media Box» в двоичном формате?

Спасибо!

/ Georg

1 Ответ

0 голосов
/ 06 августа 2011

если вам удалось получить pdf в строке, посмотрите на http://msdn.microsoft.com/en-us/library/8460tsh1(v=VS.90).aspx#Y1420, чтобы найти (под) строки в строке

и я использую это для преобразования байтов в строку:

        Dim buf(ssd.SrcLength - 1) As Byte
        EditRdFile = ReadFile(ssd.SrcFileIx)
        EditRdFile.Seek(ssd.SrcStart - 1, SeekOrigin.Begin)
        EditRdFile.Read(buf, 0, ssd.SrcLength)
        If CurrEdtSession.IsUnicode Then
            Dim enc As System.Text.Encoding = New System.Text.UnicodeEncoding(False, True, True)
            value = enc.GetString(buf)
        Else
            value = System.Text.Encoding.Default.GetString(buf)
        End If

из моего редактора, который обрабатывает ANSI и Unicodefiles

...