Какого формата этот файл (начиная с "!Р! SEM 9;EXIT;") и как отобразить его на экране

у меня есть следующий файл, найденный на клиентской системе, и мне нужно выяснить, какой формат и (если возможно), как открыть его в Windows (Win7 или выше было бы прекрасно).

это должен быть какой-то формат графики / принтера.
Имя файла не содержит extencion и был создан с помощью Windows 95.

заголовочный файл:

!R! SEM 9;EXIT;
%-12345X@PJL JOB
@PJL SET ECONOMODE=OFF 
@PJL RDYMSG DISPLAY=""
@PJL ENTER LANGUAGE=POSTSCRIPT
M%!PS-Adobe-3.0
%%Title: 
%%Creator: Kyocera Mita FS-1020D KX
%%CreationDate: 10/24/2016 08:45
%%DocumentPrinterRequired: Kyocera Mita FS-1020D KX
%%For: 
%%BoundingBox: (atend)
%%Pages: (atend)
%%Orientation: (atend)
%%PageOrder: Special
%%DocumentNeededResources: (atend)
%%DocumentSuppliedResources: (atend)
%%DocumentData: Clean7Bit
%%LanguageLevel: 2
%%EndComments
%%BeginDefaults
%%PageOrientation: Portrait
%%PageBoundingBox: 12 10 407 587
%%PageMedia: (Plain)
%%EndDefaults
%%BeginProlog
%%BeginResource: Macro_Basic
/KPDLBASE 100 dict dup begin

Он содержит больше "%%"-разделов, здесь без контента, так как он может быть чувствительным данные:

%% Graphics
...
%% Font
...
%% Reencode
...
%% T42
...
end def
%%EndResource
%%EndProlog
%%BeginSetup
KPDLBASE begin
%%BeginFeature: *Resolution 600dpi
BF{
  <</HWResolution [600 600]>> SP
  <</PreRenderingEnhance t>> SP
}EF
%%EndFeature
%%BeginFeature: *InputSlot (Auto Tray Select)
BF{
<</DeferredMediaSelection t>> SP
}EF
%%EndFeature
%%BeginFeature: *PageSize (A5)
BF{
  <</Policies <</PageSize 7>> /PageSize [422 595] /ImagingBBox n>> SP
}EF
%%EndFeature
%%BeginFeature: *MediaType (Automatische Medienauswahl)
BF{
}EF
%%EndFeature
%%BeginFeature: Copies 1
BF{
  <</NumCopies 1>> SP
}EF
%%EndFeature
%%BeginFeature: *Duplex None
BF{
  & ` f setduplexmode E
}EF
%%EndFeature
%%BeginFeature: *Smoothing ON
BF{
  1 & /setdoret g e
}EF
%%EndFeature
%%BeginFeature: *Collate true
BF{
    userdict /UICollateDetails known not {userdict /UICollateDetails 10 # put} if
    userdict /UICollateDetails g @ /Mode 0 put /Hold 0 put
    <</Collate t /CollateDetails UICollateDetails>> SP
}EF
%%EndFeature
  /DTM [0.12000 0.0 0.0 -0.12000 10 587] d
%%EndSetup
KPDLBASE /PageSV save put
%%Page: 1 1
%%PageOrientation: Landscape
%%PageBoundingBox: (atend)
%%BeginPageSetup
  [0.0 0.12000 0.12000 0.0 12 10] + G
%%EndPageSetup

затем следует ~2500 строк содержимого и следующий нижний колонтитул:

%%PageTrailer
%%PageBoundingBox: 0 0 574 396
/PageSV where { pop PageSV restore } if
%%Trailer
%%Pages: 1
%%Orientation: Portrait Landscape
%%BoundingBox: 0 0 574 396
%%EOF
%-12345X@PJL EOJ
%-12345X

EDIT:

вот код для консольного приложения c#, которое пытается преобразовать все файлы в данном каталоге в PDF-файлы. Обратите внимание, что я не делал никакой проверки по заданным входным данным.

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PrintDataToPDF
{
    class Program
    {
        static void Main(string[] args)
        {
        Console.WriteLine("Input filepath:");
        string inputDir = Console.ReadLine();

        DirectoryInfo dir = new DirectoryInfo(inputDir);

        Console.WriteLine("Output filepath:");

        string outputDir = Console.ReadLine();

        List<FileInfo> fileList = new List<FileInfo>();

        foreach (FileInfo item in dir.GetFiles())
        {
            fileList.Add(item);
        }

        Console.WriteLine(fileList.Count + " files found! Convertation is starting..");

        foreach (FileInfo item in fileList)
        {
            string tempname = Path.GetTempFileName();
            using (StreamReader reader = new StreamReader(item.FullName))
            {
                string content = reader.ReadToEnd();
                using (StreamWriter writer = new StreamWriter(tempname))
                {
                    writer.Write(content.Substring(content.IndexOf("%%")));
                }
                Process.Start(@"C:Program Filesgsgs9.21bingswin64c.exe", "-o " + outputDir + item.Name + "out.pdf -sDEVICE=pdfwrite "+ tempname);
                Console.WriteLine(item.Name + " was converted!");
            }
        }

        Console.WriteLine("DONE");
        Console.ReadLine();
    }
}
}
28
задан user450387
19.05.2023 13:12 Количество просмотров материала 2501
Распечатать страницу

1 ответ

!R!SEM6;EXIT; - это команда, используемая принтерами и копирами kyocera (которая, вероятно, была драйвером печати, используемым для создания этого файла).

  • !R! стоит для кода опознавания для предписывает команды.
  • SEM стенды для режима эмуляции. эта команда временно изменяет режим эмуляции.
  • 6 означает эмуляцию HPIII
  • EXIT заканчивается исполнение

следующую строку @PJL укажите"заголовок языка задания печати".

на M%!PS-Adobe-3.0 указывает, что все остальное является Postscript-кодом.

вы можете распечатать этот файл RAW на принтере, но если вы хотите просмотреть его на экране, вы можете взять весь код Postscript и преобразовать его в видимое изображение.

например, вы можете использовать Ghostscript для создания PDF. Сохраните весь код Postscript (начиная с % % Title) в файл и выполните gs.исполняемый.

gs.exe -o out.pdf -sDEVICE=pdfwrite input-file

Edit: если у вас 1500+ файлов, вы можете использовать пакетный файл для их преобразования. Предполагая, что все они находятся в одном каталоге, вы можете сделать что-то вроде этого:

создать это преобразование.cmd где-то:

Предполагается, что ваши файлы находятся в C:\YOUR_RAW_FILES

Предполагается, что все они находятся в одном каталоге

Предполагается, GS установлен в файлах C:\Program (х86)\ГС\gs9.05\бин\ (измениться, если другие version)

@echo off

:: create a convert directory and remove contents
if not exist "C:\MYCONVERTS\" mkdir C:\MYCONVERTS
del /Q C:\MYCONVERTS\*.*

:: loop through all your files and pass the linenumber for %%Title to convert-procedure
for %%X IN (C:\YOUR_RAW_FILES\*.*) do (
  for /f "delims=:" %%a in ('findstr /n "%%Title" %%X') do call :convert %%a %%X %%~nX
)

:: remove the temp files leaving the pdf files in MYCONVERTS
del /Q C:\MYCONVERTS\*.tmp

goto End
::--------------------------------

::================================
:convert
:: we need the lines above %%Title (so - 1)
set /a z=%1 - 1
:: export all remaining lines to .tmp (skipping the first x lines)
for /f "tokens=* skip=%z%" %%b IN ('type %2') DO @echo %%b >> C:\MYCONVERTS\%3.tmp

:: execute ghostscript with correct parameters
"C:\Program Files (x86)\gs\gs9.05\bin\gswin32c.exe" -o C:\MYCONVERTS\%3.pdf -sDEVICE=pdfwrite C:\MYCONVERTS\%3.tmp

goto :eof
::================================

:End

Я не уверен, что это будет задерживаться, если файлы содержат реальную двоичную информацию, но вы можете попробовать.

2
отвечен Rik 2023-05-20 21:00

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх