很多扫描版的电子书,留有很大的页边距,大屏的设备看起来没有啥影响,
可是在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();
                }
    

      

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

  1. Asp.net MVC 利用(aspose+pdfobject.js) 实现在线预览word、excel、ppt、pdf文件

    在线预览word.excel.ppt利用aspose动态生成html 主要代码 private bool OfficeDocumentToHtml(string sourceDoc, string s ...

  2. 【.Net 学习系列】-- 利用Aspose转换Excel为PDF文件

    功能: 从数据库中查询出数据 利用Aspose.cell + Excel模板绑定数据源生成Excel文件 通过Aspose.pdf + 生成好的Excel生成PDF文件 实现: 查询数据,根据Exce ...

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

    我们知道,一般都导出的Word文档或者Excel文档,基本上分为两类,一类是动态生成全部文档的内容方式,一种是基于固定模板化的内容输出,后者在很多场合用的比较多,这也是企业报表规范化的一个体现. 我的 ...

  4. 利用Aspose文档转图片

    通过使用Aspose您可以轻松的将您的文档转换成真正的图片格式,最好的保证您的内容将实际可见,与其他格式相比,它并不存在查看工具的安装问题. 准备工作: 1:下载Aspose组件包:http://do ...

  5. 利用Aspose.Cell控件导入Excel非强类型的数据

    导入Excel的操作是非常常见的操作,可以使用Aspose.Cell.APOI.MyXls.OLEDB.Excel VBA等操作Excel文件,从而实现数据的导入,在导入数据的时候,如果是强类型的数据 ...

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

    Magento PDF发票,支持中文,以及修改的办法.   如果让magento的PDF发票支持中文.Magento生成PDF发票.使用的是zend framework的zend_pdf类. 下面是一 ...

  7. 【分享】改变未来的九大算法[pdf][清晰扫描版]

    [下载地址]http://www.colafile.com/file/1179688 图书信息:中文名: 改变未来的九大算法作者: 约翰·麦考密克译者: 管策图书分类: 软件资源格式: PDF版本: ...

  8. Pdf文件处理组件对比(Aspose.Pdf,Spire.Pdf,iText7)

    目的 因为公司是做医疗相关软件的,所以经常和文档打交道,其中就包含了Pdf.医院的Pdf(通常是他们的报告)都千奇百怪,而我们一直以来都是在用一些免费且可能已经没人维护了的组件来处理Pdf,所以就经常 ...

  9. App阅读pdf和扫描二维码功能

    在之前开发的Android手机App中,需要实现阅读pdf和扫描二维码的功能,在github 上找到大牛封装好包,亲测可用. 阅读pdf: https://github.com/barteksc/An ...

随机推荐

  1. nginx下rewrite参数超过9个的解决方法

    nginx 在处理多于9个参数的时候,是采用重命名的方法来实现的: /?m?([0-9,]*)h?(\d*)a?([0-9,]*)c?(\d*)s?(x?f?(?P<f>[0-9,]*)/ ...

  2. 【Jersey】基于Jersey构建Restful Web应用

    环境说明 java: 1.6: tomcat: 6.0.48: Jersey:1.18: Jersey介绍 主要用于构建基于Restful的Web程序: 构建基于Maven的Javaweb程序 说明: ...

  3. [系统开发] Python 实现的 Bind 智能 DNS Web 管理系统

    在公司的运营中,DNS还是很重要的,不仅名称解析需要DNS,一些重要的服务,比如负载均衡.HTTP 虚拟主机也会用到它.Bind 手工管理方式有一定的危险性,一旦写错格式就会造成 DNS 服务瘫痪. ...

  4. 关于request.getParameterMap()的类型转换和数据获取

    首先po上一个自己写的转换类. /** * @author Xfiler * @described 将request.getParameterMap()转换为普通的Map的工具方法 * @param ...

  5. 使用log4net 日志输出到数据库MySQL

    使用Log4Net的输出日志到MySQL 使用步骤如下: 1. 添加引用Log4Net.dll, mysql.data.dll到工程中 note: mysql.data.dll 版本要高,最好到mys ...

  6. DHTMLX-第一弹

    DHTMLX 半年前结束了漂泊的工作生活回到了公司,跟着团队开发新产品.忙碌起来就很少有时间静下来好好写点东西.公司既然要开发新的产品当然也会接触一些新的东西,也会面临新的挑战.接下来就将项目前端所用 ...

  7. Spring MVC4 纯注解配置教程

    阅读本文需要又一定的sping基础,最起码要成功的运行过一个SpringMvc项目. 在传统的Spring项目中,我们要写一堆的XML文件.而这些XML文件格式要求又很严格,很不便于开发.而网上所谓的 ...

  8. linux下解压大于4G文件提示error: Zip file too big错误的解决办法

    error: Zip file too big (greater than 4294959102 bytes)错误解决办法.zip文件夹大于4GB,在centos下无法正常unzip,需要使用第三方工 ...

  9. Python 之 时间字符串、时间戳、时间差、任意时间字符串转换时间对象

    1. 时间字符串 --> 时间戳 1) time 模块 timestring = '2016-12-21 10:22:56' print time.mktime(time.strptime(ti ...

  10. sql server 常见问题笔记

    1.关于复制类型 快照发布:发布服务器按预定的时间间隔向订阅服务器发送已发布数据的快照. 事务发布:在订阅服务器收到已发布数据的初始快照后,发布服务器将事务流式传输到订阅服务器. 对等发布:对等发布支 ...