ひとりも見捨てないことを、あきらめない

学校教育、社会教育、数学、技術家庭科、Youtube、EdTech、ICT、プログラミング、その他

PDFフアイルを読み込む  02/08 土

自分用メモです。

// PDFフアイルを読み込む
public void T4ReadPDF(ProgressBar T4PG, TextBox T4Tb1, DataTable T4Dt)
{
    string DataPdfFileName;

    OpenFileDialog ofd = new OpenFileDialog();
    ofd.InitialDirectory = ".";  // 初期表示フォルダ
    ofd.Filter = "PDFファイル|*.pdf";  // ファイルの種類
    if (ofd.ShowDialog() == DialogResult.OK)
    {
        DataPdfFileName = ofd.FileName;
    }
    else
    {
        return;
    }

    var doc = PdfDocument.Load(DataPdfFileName);

    int i = 0;
    foreach (var page in doc.Pages)
    {
        i++;
    }
    T4PG.Maximum = i--;

    i = 0;
    foreach (var page in doc.Pages)
    {
        int w = (int)page.Width;
        int h = (int)page.Height;

        int nw = 1200;
        int nh = nw * h / w;

        int namex = ListWaku[0].ImgRect.X;
        int namey = ListWaku[0].ImgRect.Y;
        int namew = ListWaku[0].ImgRect.Width;
        int nameh = ListWaku[0].ImgRect.Height;

        Bitmap tmp1 = new Bitmap(nw, nh);
        Bitmap tmp2 = new Bitmap(namew, nameh);

        Graphics tmp1g = Graphics.FromImage(tmp1);
        Graphics tmp2g = Graphics.FromImage(tmp2);
        // ページを画像の変換し、GD+ を利用して画像化する
        page.Render(tmp1g, 0, 0, nw, nh, PageRotate.Normal, RenderFlags.FPDF_ANNOT);
        tmp2g.DrawImage(tmp1, -namex, -namey, nw, nh);
        tmp1g.Dispose();
        tmp2g.Dispose();

        T4Dt.Rows[7][i] = tmp2;

        i++;
        T4PG.Value = i;
    }
    doc.Dispose();
}
    

f:id:takase_hiroyuki:20191123160855p:plain