Как конвертировать страницы в формате PDF в изображения с помощью iTextSharp? - PullRequest
0 голосов
/ 18 мая 2019

Я использую приведенный ниже фрагмент кода для преобразования страниц документа PDF в изображения (.jpg) с помощью пакета с открытым исходным кодом iTextSharp v5.5.13.

List<string> pdfImage = new List<string>();
string fileName = Path.GetFileNameWithoutExtension(pdfFullPath);

var pdf = new PdfReader(pdfFullPath);
int n = pdf.NumberOfPages;
for (int j = 1; j <= n; j++)
{
    var pg = pdf.GetPageN(j);
    var res = PdfReader.GetPdfObject(pg.Get(PdfName.RESOURCES)) as PdfDictionary;
    var xobj = PdfReader.GetPdfObject(res.Get(PdfName.XOBJECT)) as PdfDictionary;
    if (xobj == null) continue;

    var keys = xobj.Keys;
    if (keys.Count == 0) continue;

    var obj = xobj.Get(keys.ElementAt(0));
    if (!obj.IsIndirect()) continue;

    var tg = PdfReader.GetPdfObject(obj) as PdfDictionary;
    var type = PdfReader.GetPdfObject(tg.Get(PdfName.SUBTYPE)) as PdfName;
    if (!PdfName.IMAGE.Equals(type)) continue;

    int XrefIndex = (obj as PRIndirectReference).Number;
    var pdfStream = pdf.GetPdfObject(XrefIndex) as PRStream;
    var data = PdfReader.GetStreamBytesRaw(pdfStream);
    var jpeg = Path.Combine(pdfImgPath, string.Format(fileName + j + ".jpg"));
    System.IO.File.WriteAllBytes(jpeg, data);

    pdfImage.Add(Path.GetFileName(jpeg));
}

Этот фрагмент кода принимает только изображения на каждой странице документа PDF, а не всю страницу. Я ожидаю, что вывод должен быть 'n' нет изображений, которые имеют все содержимое страниц документа PDF, где n -> нет. страниц в PDF документе. Может ли кто-нибудь помочь мне понять, что я должен изменить в своем коде, чтобы получить желаемый результат?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...