石井景都

All generations.

generate functionMon, 17 Apr 2023

dialogで指定したPDFファイルの全てのページの文字だけを切り取り、切り取った文字を画像として出力し保存する。

private void button1_Click(object sender, EventArgs e) { //pdfファイルを開く PdfReader reader = new PdfReader(this.textBox1.Text); PdfReaderContentParser parser = new PdfReaderContentParser(reader); //保存先を作る Directory.CreateDirectory(System.IO.Path.GetDirectoryName(this.textBox1.Text) + "\\" + System.IO.Path.GetFileNameWithoutExtension(this.textBox1.Text)); //ページ数分ループ int pageNum = reader.NumberOfPages; for (int i = 1; i <= pageNum; i++) { iTextSharp.text.pdf.parser.RenderListener listener = new MyRenderListener(i); parser.ProcessContent(i, listener); } //終了処理 reader.Close(); MessageBox.Show("完了しました"); }

generate functionMon, 17 Apr 2023

PDFファイルの全ページをエッジ検出して、切り取り。

// 拡張メソッド public static void ExtractTextAndImages(this PdfDocument document, string filename, string outputPath) { // ページ全体を切り取り document.ExtractTextAndImagesByPage(filename, outputPath, (i) => true); } // ページごとに指定する public static void ExtractTextAndImagesByPage(this PdfDocument document, string filename, string outputPath, Func<int, bool> isExtractPage) { for (int i = 0; i < document.NumberOfPages; i++) { var page = document.GetPage(i); if (isExtractPage(i)) { // 文字列の抽出 var text = page.ExtractText(); // 画像の抽出 page.ExtractImages(filename, outputPath, i); } } } //

generate functionMon, 17 Apr 2023

PDFファイルの文字画像だけを切り取り。

using (var pdfDocument = PdfReader.Open("input.pdf", PdfDocumentOpenMode.ReadOnly)) { for (var i = 0; i < pdfDocument.PageCount; i++) { var page = pdfDocument.Pages[i]; var images = page.GetImages() .Where(x => x.ColorSpace.Name == "DeviceGray" || x.ColorSpace.Name == "DeviceCMYK"); foreach (var image in images) { using (var pngStream = new MemoryStream()) { var png = Image.GetInstance(image); png.Save(pngStream, ImageFormat.Png); var content = new Content() { FileName = $"{i}_{image.GetHashCode()}.png", ContentType = "image/png", Content = pngStream.ToArray() }; yield return content; } } } }

generate functionMon, 17 Apr 2023

dialogで指定したPDFファイルの全てのページの文字画像だけを切り取り、切り取った文字を画像として出力し保存する。

using System; using System.ComponentModel; using System.Windows.Forms; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.IO; using System.Linq; using System.Collections.Generic; using System.Text.RegularExpressions; using System.Text; using Microsoft.Win32; using System.Threading.Tasks; using System.Numerics; using System.Runtime.InteropServices; using System.Threading; using System.Collections.Concurrent; using System.Diagnostics; using System.Reflection; using System.Security.Cryptography.X509Certificates; using System.Net.Security; using System.Net; using System.Security.Cryptography; using System.Runtime.Serialization.Json; using System.Runtime.Serialization; using System.Net.Mail; using System.Net.Mime; using System.Runtime.CompilerServices; using System.Runtime.InteropServices

generate functionMon, 17 Apr 2023

PDFファイルの漫画データーの文字画像だけを切り取り。

// カラーモードの設定 colormode = 2; // 2 = "RGB", 3 = "CMYK" // ルートの取得 var root = this.extractPages(0); // ページの取得 var page = root.extractPages(0); // ページの画像を取得 var img = page.getImages(); // 画像の色モードを設定 for (var i = 0; i < img.length; i++) { img[i].colorspace = colormode; } // ページを保存 page.flatten(); page.saveAs("[Insert PDFFolderPath Here]");

generate functionMon, 17 Apr 2023

PDFファイルの全てのページの画像だけを切り取りって画像を保存。

for(int i=0; i< pdf.numPages; i++){ PdfPage page = pdf.getPage(i); PdfReaderContentParser parser = new PdfReaderContentParser(pdf); PdfContentStreamProcessor processor = new PdfContentStreamProcessor(parser); processor.processContent(i, page.getContents().getStreamBytes()); PdfDictionary pageDictionary = page.getAsDictionary(PdfName.RESOURCES); PdfDictionary xObjectDictionary = pageDictionary.getAsDictionary(PdfName.XOBJECT); for(PdfName key : xObjectDictionary.getKeys()){ PdfObject pdfObject = xObjectDictionary.get(key); if(pdfObject.isIndirect()){ PdfDictionary imageDictionary = (PdfDictionary)PdfReader.getPdfObject(pdfObject); PRStream stream = (PRStream)imageDictionary.get(PdfName.XOBJECT); PdfImageObject image

generate functionMon, 17 Apr 2023

PDFファイルの全ページをMatオブジェクトに変換

// ファイルを開く(PDF) PdfDocument doc = PdfReader.Open(filePath); // 全ページのPdfPageオブジェクトを取得する var pagesInDoc = doc.Pages; // 全ページのPdfPageオブジェクトをMatオブジェクトに変換 var mats = pagesInDoc .Select(page => { // PdfPageオブジェクトからXGraphicsオブジェクトを生成 using (XGraphics gfx = XGraphics.FromPdfPage(page)) { // XGraphicsオブジェクトからXImageオブジェクトを生成 XImage image = XImage.FromGdiPlusImage(gfx.GetBitmap()); return image.ToBitmap(); } }) .Select(BitmapToMat) .ToArray();

generate functionMon, 17 Apr 2023

OpenCVsharp4でPDFファイルの漫画データーの文字画像だけを切り取り。

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using OpenCvSharp; using OpenCvSharp.Extensions; using OpenCvSharp.UserInterface; namespace OpenCVsharp4 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { //漫画のデーターを読み取ります。 Mat image = new Mat(@"C:\Users\Yamada\Pictures\test.jpg", ImreadModes.Color); //Mat image = new Mat(@"C:\Users\Yamada\Pictures\test.pdf", ImreadModes.Color); //Mat image = new Mat(

generate functionMon, 17 Apr 2023

dialogで指定したPDFファイルを指定

void printPdf(string fileName) { ProcessStartInfo info = new ProcessStartInfo(); info.Verb = "print"; info.FileName = fileName; info.CreateNoWindow = true; info.WindowStyle = ProcessWindowStyle.Hidden; Process p = new Process(); p.StartInfo = info; p.Start(); p.WaitForInputIdle(); System.Threading.Thread.Sleep(3000); if (false == p.CloseMainWindow()) p.Kill(); }

Questions about programming?Chat with your personal AI assistant