利用Aspose.Pdf将扫描的电子书修改为适合在kindle上查看

很多扫描版的电子书,留有很大的页边距,大屏的设备看起来没有啥影响,
可是在kindle上看起来就麻烦了,放大操作简直就没法用,最好能把留白去掉。

  1. 将pdf文件转换为图片
    这个看看 例子里的 JpegDevice就可以了
  2. 设置需要裁剪的区域
    首先将图片显示在pictureBox上,然后用鼠标画个差不多的框就可以了,
    可能有方法识别书籍的内容区,那个我不会。
    潜在的问题是有的书籍扫描得不是很好,偏得比较多,可能会导致内容被删除,
  3. 将图片组装为pdf书
    有个特殊的地方是dpi问题,
    计算像素的时候,Aspose.Pdf好像用的是72,但是每个人的情况不一样,需要做个转换。

    int pageCount = pdfDocument.Pages.Count;
                Resolution resolution = new Resolution(300);
                if (pageCount == 0)
                {
                    return;
                }
    
                float dpiX = 72;
                float dpiY = 72;
                using (Graphics graphics = Graphics.FromHwnd(IntPtr.Zero))
                {
                    dpiX = graphics.DpiX;
                    dpiY = graphics.DpiY;
                }
    
                int pageWidth = rect.Width;
                float secPageWidth = (float)(pageWidth * 72 / dpiX);
                float secPageHeight = (float)(pdfDocument.PageInfo.Height * 72 / dpiY);
                System.Drawing.Rectangle clipRect = new System.Drawing.Rectangle(rect.X, 0, rect.Width, (int)pdfDocument.PageInfo.Height);
    
                JpegDevice jpegDevice = new JpegDevice((int)pdfDocument.PageInfo.Width,
                   (int)pdfDocument.PageInfo.Height, resolution, 100);
                for (int i = 1; i <= pageCount; i++)
                {
    
                    Aspose.Pdf.Generator.Section imageSection = newPdfFileDocument.Sections.Add();
                    imageSection.PageInfo.PageWidth = secPageWidth;
                    imageSection.PageInfo.PageHeight = secPageHeight;
    
                    Aspose.Pdf.Generator.MarginInfo marginInfo = new Aspose.Pdf.Generator.MarginInfo();
                    marginInfo.Bottom = 0;
                    marginInfo.Left = 0;
                    marginInfo.Right = 0;
                    marginInfo.Top = 0;
                    imageSection.PageInfo.Margin = marginInfo;
    
                    Aspose.Pdf.Generator.Image imagePdfContent = new Aspose.Pdf.Generator.Image(imageSection);
                    imageSection.Paragraphs.Add(imagePdfContent);
                    imagePdfContent.ImageInfo.ImageFileType = Aspose.Pdf.Generator.ImageFileType.Jpeg;
    
                    MemoryStream msSrcImg = new MemoryStream();
                    jpegDevice.Process(pdfDocument.Pages[i], msSrcImg);
                    System.Drawing.Image image = System.Drawing.Image.FromStream(msSrcImg);
                    System.Drawing.Bitmap bmpImage = new System.Drawing.Bitmap(image);
                    System.Drawing.Bitmap bmpCrop = bmpImage.Clone(clipRect, bmpImage.PixelFormat);
    
                    MemoryStream msCropImg = new MemoryStream();
                    bmpCrop.Save(msCropImg, ImageFormat.Jpeg);
                    imagePdfContent.ImageInfo.ImageStream = msCropImg;
                    GC.Collect();
                }
    

      

时间: 2024-10-01 05:14:37

利用Aspose.Pdf将扫描的电子书修改为适合在kindle上查看的相关文章

PDF转EPUB格式电子书经验总结

原文发表自我的个人主页http://purplesword.info/pdf-to-epub,欢迎大家访问,谢谢支持~ 根据本人将PDF转换为EPUB电子书的经验,总结整理了这篇文章,因本人水平有限,难免有错误和不足之处,望大家及时批评指正. 写这篇文章时,假定读者已经会使用文中所列出软件的基本操作,比如怎样用Notepad++打开HTML文件,如何使用PDF Password Remover(这个软件很简单,稍有电脑操作基础的人打开后就知道怎么做).另外读者需要对ePubBuilder的操作比

利用Aspose.Word控件和Aspose.Cell控件,实现Word文档和Excel文档的模板化导出

我们知道,一般都导出的Word文档或者Excel文档,基本上分为两类,一类是动态生成全部文档的内容方式,一种是基于固定模板化的内容输出,后者在很多场合用的比较多,这也是企业报表规范化的一个体现. 我的博客介绍过几篇关于Aspose.Word控件和Aspose.Cell控件的使用操作,如下所示. <使用Aspose.Cell控件实现Excel高难度报表的生成(一)> <使用Aspose.Cell控件实现Excel高难度报表的生成(二)> <使用Aspose.Cell控件实现Ex

《Spark高级数据分析》pdf格式下载免费电子书下载

<Spark高级数据分析>pdf格式下载免费电子书下载https://u253469.ctfile.com/fs/253469-300325651 更多电子书下载: http://hadoopall.com/book 内容简介 本书是使用Spark进行大规模数据分析的实战宝典,由著名大数据公司Cloudera的数据科学家撰写.四位作者首先结合数据科学和大数据分析的广阔背景讲解了Spark,然后介绍了用Spark和Scala进行数据处理的基础知识,接着讨论了如何将Spark用于机器学习,同时介绍

《社会媒体挖掘》pdf格式下载免费电子书下载

<社会媒体挖掘>pdf格式下载免费电子书下载  https://u253469.ctfile.com/fs/253469-300325732更多电子书下载: http://hadoopall.com/book 内容简介 本书集成了近年来社会媒体.社会网络分析以及数据挖掘的前沿成果,为学生.从业者.研究人员和项目经理提供了一个方便的平台,以便理解社会媒体挖掘的基础知识和潜能.本书介绍了社会媒体数据的问题,并阐述了网络分析和数据挖掘的基本概念.新问题以及有效的算法. 作者简介 Reza Zafar

利用Aspose文档转图片

通过使用Aspose您可以轻松的将您的文档转换成真正的图片格式,最好的保证您的内容将实际可见,与其他格式相比,它并不存在查看工具的安装问题. 准备工作: 1:下载Aspose组件包:http://download.csdn.net/detail/laoge/6931819 编写代码: 核心代码AsposeFileToImg,以下代码在文档页数超过100以上生成会变慢,页数越大生成越慢,在实际使用中请注意. using System; using System.Collections.Generi

Magento PDF发票,支持中文,以及修改的办法

Magento PDF发票,支持中文,以及修改的办法. 如果让magento的PDF发票支持中文.Magento生成PDF发票.使用的是zend framework的zend_pdf类. 下面是一个简单的,使用zend framework生成pdf文件的用法.[code]<?php...// 创建一个新的PDF文档.$pdf1 = new Zend_Pdf(); // 加载一个现有的PDF文件.$pdf2 = Zend_Pdf::load($fileName); // 从字符串加载并生成PDF文

利用Aspose.Cells完成easyUI中DataGrid数据的Excel导出功能

我准备在项目中实现该功能之前,google发现大部分代码都是利用一般处理程序 HttpHandler实现的服务器端数据的Excel导出,但是这样存在的问题是ashx读取的数据一般都是数据库中视图的数据,难免会含有方便操作的 主键ID这列的记录.现在项目需要在easyUI的DataGrid中显示的数据能全部导出Excel,包括DataGrid中的中文标题,其他的统统不 要. 完成该功能所需的工具和环境:Newtonsoft.Json序列化和反序列化类库.easyUI前端UI框架.HttpHandl

Aspose.pdf for c# 创建透明超链接

using Aspose; using Aspose.Pdf; using Aspose.Pdf.InteractiveFeatures.Annotations; using Aspose.Pdf.InteractiveFeatures; ...... Aspose.Pdf.Document doc = new Aspose.Pdf.Document(_pdfFilePath); ImagePlacementAbsorberabs = new ImagePlacementAbsorber();

Aspose.Pdf for .NET控件PDF文档到Excel、EPS、SVG等的转换

Aspose.Pdffor .NET v8.6.0于昨日发布,该版本包含一个相当令人期待和兴奋的功能——就是让你能转换PDF文件为MS Excel工作簿.使用这个新的更新,开发人员就可以转换PDF文件为XLS格式,PDF文件中每个页面都以一个单独的工作表呈现.以下代码片段展示了如何使用这项功能: 1 2 3 4 5 6 // Load PDF document Aspose.Pdf.Document doc = newAspose.Pdf.Document(@"C:input.pdf"