您的问题似乎不完整,您是想询问关于C语言编程的某个具体问题吗?比如C语言的语法、编程技巧、项目开发等。请提供更具体的信息,这样我才能给出更准确的回答。

2026-03-31 08:321阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计788个文字,预计阅读时间需要4分钟。

您的问题似乎不完整,您是想询问关于C语言编程的某个具体问题吗?比如C语言的语法、编程技巧、项目开发等。请提供更具体的信息,这样我才能给出更准确的回答。

目录

一、iText

二、处理PDF页面大小一致

三、分割PDF

一、iText

iText是一个开源的Java库,用于创建和操作PDF文档。它允许开发者生成PDF文件、提取PDF内容以及修改PDF文档。

二、处理PDF页面大小一致使用iText可以调整PDF页面的大小,使其一致。这可以通过设置页面大小属性来实现。

三、分割PDF使用iText,可以基于数据将PDF分割成多个部分。首先,你需要使用iText进行页面大小一致的处理,然后根据数据分割出需要的PDF文件。

目录
  • 一、itext
  • 二、处理PDF页面大小一致
  • 三、切分PDF

一、itext

我要使用itext做一个pdf的页面大小一致性处理,然后再根据数据切分出需要的pdf.

iText的官网有关于它的介绍,然后在官网可以查找api文档。

其中我要使用的是itext7+,主要在iText.Kernel.Pdf命名空间下。

二、处理PDF页面大小一致

由于原始PDF 是扫描图片合成来的,有些页面扫描的图片规格不一致,导致pdf阅读性很差。

您的问题似乎不完整,您是想询问关于C语言编程的某个具体问题吗?比如C语言的语法、编程技巧、项目开发等。请提供更具体的信息,这样我才能给出更准确的回答。

对于这个pdf我进行处理,首先是在nuget 里面搜索 itext 进行安装,使用itext7。

处理PDF大小方法:

public void RestPageSize(string sourcePdfPath, string outputPdfPath) { PdfReader pdfReader = null; PdfDocument pdfDocument = null; PdfWriter pdfWriter = null; PdfDocument outPDfDoc = null; try { pdfReader = new PdfReader(sourcePdfPath); pdfDocument = new PdfDocument(pdfReader); var outDir = System.IO.Path.GetDirectoryName(outputPdfPath); if (!Directory.Exists(outDir)) { Directory.CreateDirectory(outDir); } pdfWriter = new PdfWriter(outputPdfPath); outPDfDoc = new PdfDocument(pdfWriter); outPDfDoc.SetDefaultPageSize(PageSize.A3); for (int i = 1; i < pdfDocument.GetNumberOfPages() + 1; i++) { var page = pdfDocument.GetPage(i); var formXObject = page.CopyAsFormXObject(outPDfDoc); var xPercent = PageSize.A3.GetWidth() / page.GetPageSize().GetWidth(); var yPercent = PageSize.A3.GetHeight() / page.GetPageSize().GetHeight(); PdfCanvas pdfCanvas = new PdfCanvas(outPDfDoc.AddNewPage()); pdfCanvas.AddXObjectWithTransformationMatrix(formXObject, xPercent, 0, 0, yPercent, 0, 0); } pdfWriter.Flush(); } catch (Exception ex) { Console.WriteLine(ex); } finally { if (pdfReader != null) { pdfReader.Close(); } if (pdfDocument != null) { pdfDocument.Close(); } if (outPDfDoc != null) { outPDfDoc.Close(); } if (pdfWriter != null) { pdfWriter.Close(); pdfWriter.Dispose(); } }

思路:遍历原来的PDF页码,将原来的PDF页码对象拷贝PdfFormXObject到要生成的PDF文档中,首先要copy页面对象才能使用,不然直接获取的page对象是原来文档的,我们无法操作。

var formXObject = page.CopyAsFormXObject(outPDfDoc);

然后对页面进行缩放计算,我们新的PDF默认设置成A3大小,通过计算原始页面和新页面宽高比例进行缩放。

计算完成后,在新文档中使用PdfCanvas对象新添加一页,然后将PdfFormXObject写入到新添加的页中。

处理后的PDF:

三、切分PDF

切分PDF 就比较简单了,直接从原始文件中拷贝页面到新PDF文档中就行了。

切分PDF 方法:

public void ExtractPages(string sourcePdfPath, string outputPdfPath, int startPage, int endPage) { PdfReader pdfReader = null; PdfDocument pdfDocument = null; PdfWriter pdfWriter = null; PdfDocument outPDfDoc = null; try { pdfReader = new PdfReader(sourcePdfPath); pdfDocument = new PdfDocument(pdfReader); var outDir = Path.GetDirectoryName(outputPdfPath); if (!Directory.Exists(outDir)) { Directory.CreateDirectory(outDir); } pdfWriter = new PdfWriter(outputPdfPath); outPDfDoc = new PdfDocument(pdfWriter); pdfDocument.CopyPagesTo(startPage, endPage, outPDfDoc); pdfWriter.Flush(); } catch (Exception ex) { Console.WriteLine(ex); } finally { if (pdfReader != null) { pdfReader.Close(); } if (pdfDocument != null) { pdfDocument.Close(); } if (outPDfDoc != null) { outPDfDoc.Close(); } if (pdfWriter != null) { pdfWriter.Close(); pdfWriter.Dispose(); } } }

注意:对写入流要进行pdfWriter.Flush()将缓冲区数据写入PDF后再关。

以上就是C#利用itext实现PDF页面处理与切分的详细内容,更多关于C# PDF页面处理 切分的资料请关注自由互联其它相关文章!

本文共计788个文字,预计阅读时间需要4分钟。

您的问题似乎不完整,您是想询问关于C语言编程的某个具体问题吗?比如C语言的语法、编程技巧、项目开发等。请提供更具体的信息,这样我才能给出更准确的回答。

目录

一、iText

二、处理PDF页面大小一致

三、分割PDF

一、iText

iText是一个开源的Java库,用于创建和操作PDF文档。它允许开发者生成PDF文件、提取PDF内容以及修改PDF文档。

二、处理PDF页面大小一致使用iText可以调整PDF页面的大小,使其一致。这可以通过设置页面大小属性来实现。

三、分割PDF使用iText,可以基于数据将PDF分割成多个部分。首先,你需要使用iText进行页面大小一致的处理,然后根据数据分割出需要的PDF文件。

目录
  • 一、itext
  • 二、处理PDF页面大小一致
  • 三、切分PDF

一、itext

我要使用itext做一个pdf的页面大小一致性处理,然后再根据数据切分出需要的pdf.

iText的官网有关于它的介绍,然后在官网可以查找api文档。

其中我要使用的是itext7+,主要在iText.Kernel.Pdf命名空间下。

二、处理PDF页面大小一致

由于原始PDF 是扫描图片合成来的,有些页面扫描的图片规格不一致,导致pdf阅读性很差。

您的问题似乎不完整,您是想询问关于C语言编程的某个具体问题吗?比如C语言的语法、编程技巧、项目开发等。请提供更具体的信息,这样我才能给出更准确的回答。

对于这个pdf我进行处理,首先是在nuget 里面搜索 itext 进行安装,使用itext7。

处理PDF大小方法:

public void RestPageSize(string sourcePdfPath, string outputPdfPath) { PdfReader pdfReader = null; PdfDocument pdfDocument = null; PdfWriter pdfWriter = null; PdfDocument outPDfDoc = null; try { pdfReader = new PdfReader(sourcePdfPath); pdfDocument = new PdfDocument(pdfReader); var outDir = System.IO.Path.GetDirectoryName(outputPdfPath); if (!Directory.Exists(outDir)) { Directory.CreateDirectory(outDir); } pdfWriter = new PdfWriter(outputPdfPath); outPDfDoc = new PdfDocument(pdfWriter); outPDfDoc.SetDefaultPageSize(PageSize.A3); for (int i = 1; i < pdfDocument.GetNumberOfPages() + 1; i++) { var page = pdfDocument.GetPage(i); var formXObject = page.CopyAsFormXObject(outPDfDoc); var xPercent = PageSize.A3.GetWidth() / page.GetPageSize().GetWidth(); var yPercent = PageSize.A3.GetHeight() / page.GetPageSize().GetHeight(); PdfCanvas pdfCanvas = new PdfCanvas(outPDfDoc.AddNewPage()); pdfCanvas.AddXObjectWithTransformationMatrix(formXObject, xPercent, 0, 0, yPercent, 0, 0); } pdfWriter.Flush(); } catch (Exception ex) { Console.WriteLine(ex); } finally { if (pdfReader != null) { pdfReader.Close(); } if (pdfDocument != null) { pdfDocument.Close(); } if (outPDfDoc != null) { outPDfDoc.Close(); } if (pdfWriter != null) { pdfWriter.Close(); pdfWriter.Dispose(); } }

思路:遍历原来的PDF页码,将原来的PDF页码对象拷贝PdfFormXObject到要生成的PDF文档中,首先要copy页面对象才能使用,不然直接获取的page对象是原来文档的,我们无法操作。

var formXObject = page.CopyAsFormXObject(outPDfDoc);

然后对页面进行缩放计算,我们新的PDF默认设置成A3大小,通过计算原始页面和新页面宽高比例进行缩放。

计算完成后,在新文档中使用PdfCanvas对象新添加一页,然后将PdfFormXObject写入到新添加的页中。

处理后的PDF:

三、切分PDF

切分PDF 就比较简单了,直接从原始文件中拷贝页面到新PDF文档中就行了。

切分PDF 方法:

public void ExtractPages(string sourcePdfPath, string outputPdfPath, int startPage, int endPage) { PdfReader pdfReader = null; PdfDocument pdfDocument = null; PdfWriter pdfWriter = null; PdfDocument outPDfDoc = null; try { pdfReader = new PdfReader(sourcePdfPath); pdfDocument = new PdfDocument(pdfReader); var outDir = Path.GetDirectoryName(outputPdfPath); if (!Directory.Exists(outDir)) { Directory.CreateDirectory(outDir); } pdfWriter = new PdfWriter(outputPdfPath); outPDfDoc = new PdfDocument(pdfWriter); pdfDocument.CopyPagesTo(startPage, endPage, outPDfDoc); pdfWriter.Flush(); } catch (Exception ex) { Console.WriteLine(ex); } finally { if (pdfReader != null) { pdfReader.Close(); } if (pdfDocument != null) { pdfDocument.Close(); } if (outPDfDoc != null) { outPDfDoc.Close(); } if (pdfWriter != null) { pdfWriter.Close(); pdfWriter.Dispose(); } } }

注意:对写入流要进行pdfWriter.Flush()将缓冲区数据写入PDF后再关。

以上就是C#利用itext实现PDF页面处理与切分的详细内容,更多关于C# PDF页面处理 切分的资料请关注自由互联其它相关文章!