昨日の
gogowaten.hatenablog.com
続き
PDFファイルをjpegに変換したものを、1つのzipファイルにできるようにした
ダウンロード
PDFtoJPEG_1.3.zip
PDFファイルは
www.maff.go.jp
野菜の輸入動向(月間速報)
https://www.maff.go.jp/kanto/seisan/engei/yasai-yunyu/attach/pdf/index-19.pdf
こちらのを利用
ダウンロードしたPDFファイルをドラッグアンドドロップで開いて
zipボタン押すと元のPDFファイルと同じフォルダにzipファイルが作成される
zipファイルの中にjpegファイル
画像閲覧アプリのLeeyesで確認
できてる!
ファイルサイズ
元のPDFファイルより3倍も大きくなってしまったのは、元のPDFが文字とグラフばかりで画像がないものだったからだねえ。
zipファイル作成とその中にjpegを詰め込む部分
<summary>
</summary>
<param name="pdfDocument"></param>
<param name="dpi"></param>
<param name="directory"></param>
<param name="fileName"></param>
<param name="quality"></param>
<param name="keta"></param>
<returns></returns>
private async Task SaveSub3(PdfDocument pdfDocument, double dpi, string directory, string fileName, int quality, int keta)
{
string zipName = System.IO.Path.Combine(directory, fileName) + ".zip";
using (var zipstream = File.Create(zipName))
{
using (ZipArchive archive = new ZipArchive(zipstream, ZipArchiveMode.Create))
{
for (int i = 0; i < MyPdfDocument.PageCount; i++)
{
int renban = i + 1;
string jpegName = MyPdfName + "_" + renban.ToString("d" + keta) + ".jpg";
using (PdfPage page = pdfDocument.GetPage((uint)i))
{
var options = new PdfPageRenderOptions();
options.DestinationHeight = (uint)Math.Round(page.Size.Height * (dpi / 96.0), MidpointRounding.AwayFromZero);
using (var stream = new Windows.Storage.Streams.InMemoryRandomAccessStream())
{
await page.RenderToStreamAsync(stream, options);
JpegBitmapEncoder encoder = new JpegBitmapEncoder();
encoder.QualityLevel = quality;
encoder.Frames.Add(BitmapFrame.Create(stream.AsStream()));
var entry = archive.CreateEntry(jpegName);
using (var entryStream = entry.Open())
{
using (var jpegStream = new MemoryStream())
{
encoder.Save(jpegStream);
jpegStream.Position = 0;
jpegStream.CopyTo(entryStream);
}
}
}
}
}
}
}
}
とても見づらい、今も無駄な処理を見つけて削除したくらいよくわかっていない、でも期待通りに動いている
zipファイル作成部分は
gogowaten.hatenablog.com
このときの105行目以降を見ながらコピペ改変
その前に
なぜかSystem.IO.Compressionを参照に追加する必要があった、これがないと
System.IO.Compression.ZipArchiveが使えなかった、なんで?
関連記事
続きは3日後
gogowaten.hatenablog.com