)
Простой способ превратить «открытый текст» в PDF - открыть документ в вашем любимом текстовом редакторе, а затем «сохранить как PDF» или «Печатать в PDF» оттуда. Это гораздо более надежно, чем пытаться использовать древнюю программу PostScript, которая (как ясно показывает тот факт, что она не работает для вас) не имеет функций. Последние версии Linux, Windows и Ma c имеют такую возможность и позволяют избежать проблем, с которыми вы сталкиваетесь.
Вместо того, чтобы считать размер носителя 11 дюймов, программа должен опросить переводчика, чтобы узнать текущий размер носителя и использовать его. Или, как я ответил на ваш предыдущий вопрос здесь , программа должна запросить у носителя переводчик определенного размера. Как я уже говорил ранее, вам нужно добавить что-то вроде:
<<
/PageSize [612 792]
>> setpagedevice
Где числа в массиве, разделенные '[]', представляют собой запрошенную ширину и высоту в точках (1/72 дюйма). Очевидно, вам нужно поместить это в программу где-то перед основным l oop. Оператор setpagedevice
инициализирует графическое состояние и стирает страницу, поэтому убедитесь, что вы делаете это до рисования чего-либо.
Вышеприведенный запрос, очевидно, относится к носителю US Letter, который равен 11 в дюймах, как и ожидает ваша программа.
Вы продолжаете утверждать, что PDF должен избегать неоднозначности, и да, так и есть, потому что файл PDF имеет размер носителя. Но здесь у вас есть не файл PDF, а программа PostScript.
Программа PostScript не должна (и в вашем случае не запрашивает) размер носителя, она может просто использовать все, что интерпретатор имеет в качестве дефолт. Например; принтеры в США обычно имеют американское письмо, принтеры в Европе имеют А4. Поэтому, когда вы запускаете вашу программу PostScript, она использует текущее значение по умолчанию. В США ваша программа, скорее всего, приведет к созданию файла PDF, в котором используется буква US, в Европе это, вероятно, будет формат A4, и поэтому файл PDF, созданный вами при запуске программы, будет использовать формат A4. Я полагаю, именно поэтому ваш опыт отличается от того, кто дал вам программу в первую очередь, ваше окружение отличается.
Имя / topmargin - это не magi c, это просто имя переменной. Я не знаю, с какими языками программирования вы знакомы, но если бы я создал локальную переменную topmargin в C ++, я бы не ожидал, что она повлияет на мою программу только потому, что она называется topmergin.
Но это не имеет ничего общего с PDF, это следствие запуска программы в двух разных средах. Каждый из созданных вами PDF-файлов будет согласованным независимо от того, какую программу просмотра PDF вы выберете, но если два файла создаются с двумя разными размерами носителей, эти два файла будут выглядеть по-разному.