zoukankan      html  css  js  c++  java
  • PdfSharp库剪裁Pdf页面边缘空白部分

    背景

    网上下载下来的Pdf格式电子书放到Kindle后由于页面太大,缩放后字常常小得看不清,因此可以通过剪裁页面边缘的空白以缩小页面,使Kindle上显示的字放大。在GitHub上星最多的C# Pdf处理库就是PdfSharp了,然而这个库没有Api手册,需要从零散的示例中找到需要的函数,因此将代码记录如下方便以后参考。

    多页Pdf重叠至一页

    using PdfSharp.Pdf;
    using PdfSharp.Pdf.IO;
    using PdfSharp.Drawing;
    
    class main {
        static void Main(string[] args) {
            XPdfForm f = XPdfForm.FromFile(@"E:Java&C#input.pdf");
            // 原来的Pdf文档
            PdfDocument output = new PdfDocument();
            // 创建空白Pdf文档
            PdfPage p = output.AddPage(); p.Width = f.PixelWidth; p.Height = f.PixelHeight;
            // 给空白的Pdf文档添加页面并设置大小为原Pdf页面大小
            XGraphics g = XGraphics.FromPdfPage(p);
            // 在该页面上创建画布
            for (int i = 0; i < f.PageCount; i++) {
                f.PageIndex = i; g.DrawImage(f, 0, 0);
                // 让f指向第i页并把f画在空白文档上
                if (i == 1) p.MediaBox = new PdfRectangle(new XRect(50, 60, p.Width - 100, p.Height - 110));
                // 根据需要调节XRect的参数以剪切页面边缘
            }
            output.Save(@"E:Java&C#output.pdf");
        }
    }
    

    多页Pdf剪裁页面边缘

    using PdfSharp.Pdf;
    using PdfSharp.Pdf.IO;
    using PdfSharp.Drawing;
    
    class main {
        static void Main(string[] args) {
            XPdfForm f = XPdfForm.FromFile(@"E:Java&C#input.pdf");
            PdfDocument output = new PdfDocument();
            for (int i = 0; i < f.PageCount; i++) {
                f.PageIndex = i;
                PdfPage p = output.AddPage(); p.Width = f.PixelWidth; p.Height = f.PixelHeight;
                XGraphics g = XGraphics.FromPdfPage(p); g.DrawImage(f, 0, 0);
                if (i != 0) p.MediaBox = new PdfRectangle(new XRect(50, 60, p.Width - 100, p.Height - 110));
                // 如果不是封面则剪裁
            }
            output.Save(@"E:Java&C#output.pdf");
        }
    }
    
  • 相关阅读:
    HDU2027 统计元音 一点点哈希思想
    湖南工业大学第一届ACM竞赛 数字游戏 字符串处理
    湖南工业大学第一届ACM竞赛 我素故我在 DFS
    HDU3293sort
    HDU2082 找单词 母函数
    HDU1018 Big Number 斯特林公式
    湖南工业大学第一届ACM竞赛 分糖果 位操作
    UVA 357 Let Me Count The Ways
    UVA 147 Dollars
    UVA 348 Optimal Array Multiplication Sequence
  • 原文地址:https://www.cnblogs.com/YuanZiming/p/10339303.html
Copyright © 2011-2022 走看看