0

Itextsharp と Bitmiracle を使用して、pdf ファイルから tif イメージを作成しようとしています。

まず、iTextsharp を使用して、pdf ファイルの各ページのバイト詳細を取得しようとしています。

string bpp = pd.Get(PdfName.BITSPERCOMPONENT).ToString();
PixelFormat pixelFormat;
switch (bpp)
{
    case "1":
        pixelFormat = PixelFormat.Format1bppIndexed;
        break;
    case "8":
        pixelFormat = PixelFormat.Format24bppRgb;
        break;
    default:
        throw new Exception(String.Format("Unknown pixel format {0}.", bpp));
}

その後、bitmiracle を使用して、その画像を tiff 形式で保存しています。しかし、画像は表示されません。

string filter = PDFStremObj.Get(PdfName.FILTER).ToString();
switch (filter)
{
    case "/FlateDecode":

    byte[] arr = PdfReader.GetStreamBytes((PRStream)PDFStremObj);

    Bitmap bmp = new Bitmap(Int32.Parse(width), Int32.Parse(height), PixelFormat.Format24bppRgb);
    BitmapData bmd = bmp.LockBits(new System.Drawing.Rectangle(0, 0, Int32.Parse(width), Int32.Parse(height)), ImageLockMode.WriteOnly,
            PixelFormat.Format24bppRgb);
    Marshal.Copy(arr, 0, bmd.Scan0, arr.Length);
    bmp.UnlockBits(bmd);
    bmp.Save(strFileNewName, System.Drawing.Imaging.ImageFormat.Tiff);
    bmp.Dispose();
    page++;
    break;
}

コードの問題を修正するか、変更を提案してください。

よろしくお願いします。

4

3 に答える 3

0

以下のリンクから参照できます。

http://www.codeproject.com/Articles/37458/PDF-Viewer-Control-Without-Acrobat-Reader-Installe

そこから、pdfをtiffファイルまたは別のファイルに変換するオプションもあります。

于 2012-07-25T12:18:40.553 に答える
0

Bitmiracle はライブラリではなく、ソフトウェア会社の名前ですが、使用しようとしていたものは libtiff ですか? 取り組んでいるタスクのサポートについては、Bitmiracle にお問い合わせください。

PDF からバイナリ データを抽出してビットマップ オブジェクトにダンプするだけでは、PDF から tiff イメージを作成することはできません。これはリンゴを絞ってオレンジジュースを作ろうとしているようなものです.

PDF ファイルを TIFF 画像に変換する場合は、PDF ファイルをレンダリングできるライブラリを使用することをお勧めします。詳細については、C# を使用した PDF から画像への変換を検索してください。

PDF ファイル内から既に TIFF として圧縮されている画像を抽出したいだけの場合は、バイナリ データを抽出して別の場所に保存することができます。

于 2012-07-25T14:11:26.940 に答える
0

配列をビットマップデータにコピーすることはできないと思います。ストライド、ビット深度、バイト順などが異なる場合があります。Lajja Thaker がその方法の 1 つを投稿しました。また、Windows XP では、一部の色付きの tiff がサポートされていないことにも注意してください。

于 2012-07-25T13:27:35.227 に答える