Хорошая библиотека для преобразования PDF в TIFF?[закрыто]

StackOverflow https://stackoverflow.com/questions/356550

  •  21-08-2019
  •  | 
  •  

Вопрос

Мне нужна библиотека Java для преобразования PDF-файлов в изображения в формате TIFF.PDF-файлы - это факсы, и я буду преобразовывать их в формат TIFF, чтобы затем можно было распознавать штрих-код на изображении.Кто-нибудь может порекомендовать хорошую бесплатную библиотеку с открытым исходным кодом для конвертации из PDF в TIFF?

Это было полезно?

Решение

Отказ от ответственности:Я работаю в Atalasoft

У нас есть SDK, который может конвертировать PDF в TIFF.Рендеринг осуществляется с помощью программного обеспечения Foxit, которое создает очень мощный и эффективный рендеринг PDF.

Другие советы

Я не могу рекомендовать какую-либо библиотеку кода, но GhostScript легко использовать для преобразования PDF в растровые форматы.Я лично использовал приведенный ниже скрипт (который также использует утилиты netpbm) для преобразования Первый страница из PDF в миниатюру в формате JPEG:

#!/bin/sh

/opt/local/bin/gs -q -dLastPage=1 -dNOPAUSE -dBATCH -dSAFER -r300 \
    -sDEVICE=pnmraw -sOutputFile=- $* |
    pnmcrop |
    pnmscale -width 240 |
    cjpeg

Вы можете использовать -sDEVICE=tiff... чтобы получить прямой вывод TIFF в различных подформатах TIFF из GhostScript.

мы здесь также делаем конвертацию PDF -> G3 tiff с высоким и низким разрешением.По моему опыту, лучший инструмент, который у вас может быть, - это Adobe PDF SDK, единственная проблема с ним - его безумная цена.Поэтому мы им не пользуемся.

что у нас хорошо работает, так это призрачный скрипт, последние версии в значительной степени надежны и корректно отображают большинство PDF-файлов.И у нас довольно много из них приходит в течение дня.В процессе производства преобразование выполняется с использованием gsdll32.dll;но если вы хотите попробовать это, используйте следующую командную строку:

gswin32c -dNOPAUSE -dBATCH -dMaxStripSize=8192 -sDEVICE=tiffg3 -r204x196 -dDITHERPPI=200 -sOutputFile=test.tif prefix.ps test.pdf

это преобразует ваш PDF-файл в формат G3 TIFF с высоким разрешением.и prefix.ps код находится здесь:

<< currentpagedevice /InputAttributes get
0 1 2 index length 1 sub {1 index exch undef } for
/InputAttributes exch dup 0 <</PageSize [0 0 612 1728]>> put
/Policies << /PageSize 3 >> >> setpagedevice

еще одна особенность этого sdk заключается в том, что он с открытым исходным кодом;вы получаете для этого исходный код как на c, так и на ps (postscript).Также, если вы используете другой инструмент, проверьте, какой движок у них есть для рендеринга pdf, может случиться так, что они используют для этого gs;как, например, это делает LeadTools.

надеюсь, это поможет, с уважением

Вы можете использовать библиотеку icepdf (лицензия Apache 2.0).Они даже предоставляют этот точный вариант использования в качестве одного из своих примеров исходного кода:http://wiki.icesoft.org/display/PDF/Multi-page+Tiff+Capture

Возможно, нет необходимости конвертировать PDF в TIFF.Факс, скорее всего, будет встроенным изображением в формате PDF, так что вы можете просто извлечь эти изображения снова.Это должно быть возможно с помощью уже упомянутой библиотеки iText.

Я не знаю, проще ли это, чем другой подход.

No Itext не может конвертировать PDF-файлы в Tiff.

Однако существуют коммерческие библиотеки, которые могут это сделать.jPDFImages - это 100% java-библиотека, которая может конвертировать PDF в изображения в форматах TIFF, JPEG или PNG (и, может быть, JBIG?Я не уверен).Он также может сделать обратное - создать PDF-файл из изображений.Она начинается с 300 долларов за сервер.

Вот хорошая статья и классы-оболочки для использования GhostScript с C # .NET ... в итоге я использовал это в производстве

http://www.codeproject.com/KB/cs/GhostScriptUseWithCSharp.aspx

У меня есть большой опыт работы с iText (сейчас я использую версию 5.0.6), и это код для преобразования tiff в pdf:

private static String convertTiff2Pdf(String tiff) {

    // target path PDF
    String pdf = null;

    try {

        pdf = tiff.substring(0, tiff.lastIndexOf('.') + 1) + "pdf";

        // New document A4 standard (LETTER)
        Document document = new Document(PageSize.LETTER, 0, 0, 0, 0);

        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(pdf));
        int pages = 0;
        document.open();
        PdfContentByte cb = writer.getDirectContent();
        RandomAccessFileOrArray ra = null;
        int comps = 0;
        ra = new RandomAccessFileOrArray(tiff);
        comps = TiffImage.getNumberOfPages(ra);

        // Convertion statement
        for (int c = 0; c < comps; ++c) {
            Image img = TiffImage.getTiffImage(ra, c + 1);
            if (img != null) {
                System.out.println("page " + (c + 1));
                img.scalePercent(7200f / img.getDpiX(), 7200f / img.getDpiY());
                document.setPageSize(new Rectangle(img.getScaledWidth(), img.getScaledHeight()));
                img.setAbsolutePosition(0, 0);
                cb.addImage(img);
                document.newPage();
                ++pages;
            }
        }

        ra.close();
        document.close();

    } catch (Exception e) {
        logger.error("Convert fail");
        logger.debug("", e);
        pdf = null;
    }

    logger.debug("[" + tiff + "] -> [" + pdf + "] OK");
    return pdf;

}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top