powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / WMF&EMF in Java
6 сообщений из 6, страница 1 из 1
WMF&EMF in Java
    #38937082
Philip_Stubborn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, друзья!
Подскажите, пожалуйста, что лучше использовать для работы с wmf(emf) в java, если нужно сделать такой WMF Viewer?
У меня есть несколько вариантов:
1. Batik library
2. ImageMagick
3. Aspose.Total

Может у вас есть предложения получше?

Спасибо!
...
Рейтинг: 0 / 0
WMF&EMF in Java
    #38937646
Philip_Stubborn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня есть код на C#:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
  private int ProccessEMF(byte[] aContent, int aArchiverType)
        {
            byte[] tmpBytes = aArchiverType == 0 ? aContent : Console.Utilites.Tools.UnpackArchivedData(aContent, aArchiverType);
            MemoryStream ms =  null;
            if (tmpBytes != null)
            {   
                ms = new MemoryStream(tmpBytes);
                BinaryReader Reader = new BinaryReader(ms);
                int EMF_Count = 0;
                while (!(ms.Position >= ms.Length))
                {
                    int Current_EMF_Length = Reader.ReadInt32();
                    if (Current_EMF_Length > 0)
                    {
                        byte[] Current_EMF_data = new byte[Current_EMF_Length];
                        int readed = Reader.Read(Current_EMF_data, 0, Current_EMF_Length);
                        if (readed == Current_EMF_Length)
                        {
                            SaveEMFDataToTempFile(Current_EMF_data, EMF_Count);
                            EMF_Count++;
                        }
                    }
                }
                ms.Close();
                m_page_count = EMF_Count;
            }
            else
            {
                return ERROR_UNPACK_ERRROR;  // unpack error
            }
            
            ShowEMFFile();
            return 0;
        }



Он emf файл, который лежит в БД (заархивированный), читает и разбивает на pdf файлы по страницам

Я попытался его перевести на Java так
На Java из C#
Код: c#
1.
byte[] tmpBytes = aArchiverType == 0 ? aContent : Console.Utilites.Tools.UnpackArchivedData(aContent, aArchiverType);


уже передается разархивированный

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
public List<String> ProccessEMF(byte[] aContent) throws IOException {
        List<String> list = new ArrayList<>();        
        ByteArrayInputStream ms =  null;
        if (aContent != null)
        {
            ms = new ByteArrayInputStream(aContent);            
            BinaryReaderDotNet Reader = new BinaryReaderDotNet(ms);
            int EMF_Count = 0;

            while  (ms.read() != -1) //(!(ms.Position >= ms.Length)) in C#
            {
                int Current_EMF_Length = Reader.readInt32();
                if (Current_EMF_Length > 0)
                {
                    byte[] Current_EMF_data = new byte[Current_EMF_Length];
                    int readed = Reader.read(Current_EMF_data, 0, Current_EMF_Length);
                    if (readed == Current_EMF_Length)
                    {
                        SaveEMFDataToTempFile(Current_EMF_data, EMF_Count);
                        list.add(getPathToEDF(EMF_Count));
                        EMF_Count++;
                    }
                }
            }
            ms.close();            
        }
        else
        {
            list.add(String.valueOf(ERROR_UNPACK_ERRROR));
            return list;  // unpack error
        }
        return list;
    }



Но на Java у меня этот код не работает, то есть
Код: java
1.
2.
3.
4.
5.
{
                        SaveEMFDataToTempFile(Current_EMF_data, EMF_Count);
                        list.add(getPathToEDF(EMF_Count));
                        EMF_Count++;
                    }


никогда не наступает
...
Рейтинг: 0 / 0
WMF&EMF in Java
    #38938442
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
            while  (ms.read() != -1) //(!(ms.Position >= ms.Length)) in C#


Из "источника" ПРОЧИТАЛИ один символ/байт и ЗАБЫЛИ его.
Код: java
1.
                int Current_EMF_Length = Reader.readInt32();


Из источника ПРОЧИТАЛИ, подозреваю, еще 4 байта.

IMHO & AFAIK
...
Рейтинг: 0 / 0
WMF&EMF in Java
    #38940895
Philip_Stubborn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,
Но а в C# то тоже он таким же алгоритмом работает
((
...
Рейтинг: 0 / 0
WMF&EMF in Java
    #38940903
Philip_Stubborn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В C# все норм
...
Рейтинг: 0 / 0
WMF&EMF in Java
    #38940993
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Philip_StubbornНо а в C# то тоже он таким же алгоритмом работает
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / WMF&EMF in Java
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]