mirror of
https://github.com/revenz/FileFlowsPlugins.git
synced 2026-05-19 02:18:57 -05:00
109 lines
4.3 KiB
C#
109 lines
4.3 KiB
C#
// using Docnet.Core;
|
|
// using Docnet.Core.Editors;
|
|
// using Docnet.Core.Models;
|
|
//
|
|
// namespace FileFlows.ComicNodes.Helpers;
|
|
//
|
|
// internal class PdfHelper
|
|
// {
|
|
// public static void Extract(NodeParameters args, string pdfFile, string destinationDirectory, string filePrefix, bool halfProgress, CancellationToken cancellation)
|
|
// {
|
|
// using var library = DocLib.Instance;
|
|
// using var docReader = library.GetDocReader(pdfFile, new PageDimensions(1080, 1920));
|
|
//
|
|
// if (args?.PartPercentageUpdate != null)
|
|
// args?.PartPercentageUpdate(halfProgress ? 50 : 0);
|
|
//
|
|
// int pageCount = docReader.GetPageCount();
|
|
// for (int i = 1; i < pageCount; i++)
|
|
// {
|
|
// using var pageReader = docReader.GetPageReader(i);
|
|
// var rawBytes = pageReader.GetImage();
|
|
//
|
|
// var file = Path.Combine(destinationDirectory,
|
|
// filePrefix + "-" + i.ToString(new string('0', pageCount.ToString().Length)));
|
|
// var result = args!.ImageHelper.SaveImage(rawBytes, file);
|
|
// if (result.Failed(out string error))
|
|
// {
|
|
// args.Logger?.WLog("Failed to save image: " + error);
|
|
// continue;
|
|
// }
|
|
//
|
|
// if (args?.PartPercentageUpdate != null)
|
|
// {
|
|
// float percent = (i / pageCount) * 100f;
|
|
// if (halfProgress)
|
|
// percent = (percent / 2);
|
|
// args?.PartPercentageUpdate(percent);
|
|
// }
|
|
// if (cancellation.IsCancellationRequested)
|
|
// return;
|
|
// }
|
|
// if (args?.PartPercentageUpdate != null)
|
|
// args?.PartPercentageUpdate(halfProgress ? 50 : 0);
|
|
// }
|
|
//
|
|
// /// <summary>
|
|
// /// Creates a PDF from images
|
|
// /// </summary>
|
|
// /// <param name="args">the NodeParameters</param>
|
|
// /// <param name="directory">the directory to of images</param>
|
|
// /// <param name="output">the output file of the pdf</param>
|
|
// /// <param name="halfProgress">if the NodePArameter.PartPercentageUpdate should start at 50%</param>
|
|
// internal static void Create(NodeParameters args, string directory, string output, bool halfProgress = true)
|
|
// {
|
|
// if (args.PartPercentageUpdate != null)
|
|
// args.PartPercentageUpdate(halfProgress ? 50 : 0);
|
|
// var rgxImages = new Regex(@"\.(jpeg|jpg|jpe|png|webp)$");
|
|
// var files = Directory.GetFiles(directory).Where(x => rgxImages.IsMatch(x)).ToArray();
|
|
//
|
|
// List<JpegImage> images = new List<JpegImage>();
|
|
// for(int i = 0; i < files.Length; i++)
|
|
// {
|
|
// var file = files[i];
|
|
// if (file.ToLowerInvariant().EndsWith(".png") || file.ToLowerInvariant().EndsWith(".webp"))
|
|
// {
|
|
// string jpegImage = Path.ChangeExtension(file, "jpg");
|
|
// args!.ImageHelper.ConvertToJpeg(file, jpegImage, null);
|
|
// file = jpegImage;
|
|
// }
|
|
//
|
|
// (int width, int height) = args!.ImageHelper.GetDimensions(file).Value;
|
|
//
|
|
// var jpeg = new JpegImage
|
|
// {
|
|
// Bytes = File.ReadAllBytes(file),
|
|
// Width = width,
|
|
// Height = height
|
|
// };
|
|
// images.Add(jpeg);
|
|
//
|
|
// if (args?.PartPercentageUpdate != null)
|
|
// {
|
|
// float percent = (i / ((float)files.Length)) * 100f;
|
|
// if (halfProgress)
|
|
// percent = 50 + (percent / 2);
|
|
// args?.PartPercentageUpdate(percent);
|
|
// }
|
|
// }
|
|
//
|
|
// var bytes = DocLib.Instance.JpegToPdf(images);
|
|
// File.WriteAllBytes(output, bytes);
|
|
//
|
|
// if (args?.PartPercentageUpdate != null)
|
|
// args?.PartPercentageUpdate(100);
|
|
// }
|
|
//
|
|
// /// <summary>
|
|
// /// Gets the number of pages in a PDF
|
|
// /// </summary>
|
|
// /// <param name="pdfFile">the PDF file</param>
|
|
// /// <returns>the number of pages in the PDF</returns>
|
|
// internal static int GetPageCount(string pdfFile)
|
|
// {
|
|
// using var library = DocLib.Instance;
|
|
// using var docReader = library.GetDocReader(pdfFile, new PageDimensions(1080, 1920));
|
|
// return docReader.GetPageCount();
|
|
// }
|
|
// }
|