C# 删除PDF分页符
如何从pdf中删除分页符,使输出成为单个“页面”pdf?所以,如果一个普通页面是400x900,我有4个页面,那么生成的文件将是1600x900。我以前为Tif文件()做过这项工作,但我想用PDF做。我是否可以转换为ps,删除任何表示“分页符”的代码,然后转换回pdf?使用iTextSharp C#库。它为您提供了许多操作PDF的选项。我以前在为封闭源代码文档存储库编写导入应用程序时使用过它。它就像一个符咒。唯一的缺点是他们的文档不完整,因为他们希望你购买他们的书。您可以免费浏览他们的Java API,因为它几乎与C#相同,只需使用它就可以找到C#版本 iText:使用iTextSharp C#库。它为您提供了许多操作PDF的选项。我以前在为封闭源代码文档存储库编写导入应用程序时使用过它。它就像一个符咒。唯一的缺点是他们的文档不完整,因为他们希望你购买他们的书。您可以免费浏览他们的Java API,因为它几乎与C#相同,只需使用它就可以找到C#版本C# 删除PDF分页符,c#,pdf,itextsharp,ghostscript,C#,Pdf,Itextsharp,Ghostscript,如何从pdf中删除分页符,使输出成为单个“页面”pdf?所以,如果一个普通页面是400x900,我有4个页面,那么生成的文件将是1600x900。我以前为Tif文件()做过这项工作,但我想用PDF做。我是否可以转换为ps,删除任何表示“分页符”的代码,然后转换回pdf?使用iTextSharp C#库。它为您提供了许多操作PDF的选项。我以前在为封闭源代码文档存储库编写导入应用程序时使用过它。它就像一个符咒。唯一的缺点是他们的文档不完整,因为他们希望你购买他们的书。您可以免费浏览他们的Java
iText:这可以在iTextSharp库中通过使用单列PdfTable并根据页数动态更改文档大小来完成 您当然需要对找到的iTextSharp DLL进行一些引用 下面是一个简单的例子:
public static void MergePages()
{
using (PdfReader reader = new PdfReader(@"C:\Users\cmilne\Desktop\AA0081913.pdf"))//Original PDF containing page breaks.
{
int pages = reader.NumberOfPages;
float postProcessPageHeight = 0;
float postProcessPageWidth = 0;
for (int p = 1; p <= bill.PageCount; p++)
{
var size = bill.PdfReader.GetPageSize(p);
postProcessPageHeight += (size.Height);
if (size.Width > postProcessPageWidth)
postProcessPageWidth = (size.Width);
}
var rect = new Rectangle(postProcessPageWidth, postProcessPageHeight);
using (Document document = new Document(rect, 0, 0, 0, 0))
{
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(@"C:\Users\cmilne\Desktop\AA0081913_NEW.pdf", FileMode.Create)); //Declare location\name of new PDF not containing page breaks.
document.Open();
PdfImportedPage page;
PdfPTable table = new PdfPTable(1);
table.WidthPercentage = 100;
for (int i = 1; i <= pages; i++)
{
page = writer.GetImportedPage(reader, i);
table.AddCell(iTextSharp.text.Image.GetInstance(page));
}
document.Add(table);
document.Close();
}
}
}
publicstaticvoidmergepages()
{
使用(PdfReader reader=new PdfReader(@“C:\Users\cmilne\Desktop\AA0081913.pdf”)//包含分页符的原始pdf。
{
int pages=reader.NumberOfPages;
浮点后处理页面高度=0;
浮点后处理pagewidth=0;
for(int p=1;p后处理页面宽度)
postProcessPageWidth=(size.Width);
}
var rect=新矩形(后处理页面宽度、后处理页面高度);
使用(文档=新文档(rect,0,0,0,0))
{
PdfWriter writer=PdfWriter.GetInstance(文档,新文件流(@“C:\Users\cmilne\Desktop\AA0081913_new.pdf”,FileMode.Create));//声明不包含分页符的新pdf的位置\名称。
document.Open();
PDF导入页面;
PdfPTable table=新的PdfPTable(1);
表1.1:百分比=100;
对于(int i=1;i这可以在iTextSharp库中通过使用单列PdfTable并根据页数动态更改文档大小来完成
您当然需要对找到的iTextSharp DLL进行一些引用
下面是一个简单的例子:
public static void MergePages()
{
using (PdfReader reader = new PdfReader(@"C:\Users\cmilne\Desktop\AA0081913.pdf"))//Original PDF containing page breaks.
{
int pages = reader.NumberOfPages;
float postProcessPageHeight = 0;
float postProcessPageWidth = 0;
for (int p = 1; p <= bill.PageCount; p++)
{
var size = bill.PdfReader.GetPageSize(p);
postProcessPageHeight += (size.Height);
if (size.Width > postProcessPageWidth)
postProcessPageWidth = (size.Width);
}
var rect = new Rectangle(postProcessPageWidth, postProcessPageHeight);
using (Document document = new Document(rect, 0, 0, 0, 0))
{
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(@"C:\Users\cmilne\Desktop\AA0081913_NEW.pdf", FileMode.Create)); //Declare location\name of new PDF not containing page breaks.
document.Open();
PdfImportedPage page;
PdfPTable table = new PdfPTable(1);
table.WidthPercentage = 100;
for (int i = 1; i <= pages; i++)
{
page = writer.GetImportedPage(reader, i);
table.AddCell(iTextSharp.text.Image.GetInstance(page));
}
document.Add(table);
document.Close();
}
}
}
publicstaticvoidmergepages()
{
使用(PdfReader reader=new PdfReader(@“C:\Users\cmilne\Desktop\AA0081913.pdf”)//包含分页符的原始pdf。
{
int pages=reader.NumberOfPages;
浮点后处理页面高度=0;
浮点后处理pagewidth=0;
for(int p=1;p后处理页面宽度)
postProcessPageWidth=(size.Width);
}
var rect=新矩形(后处理页面宽度、后处理页面高度);
使用(文档=新文档(rect,0,0,0,0))
{
PdfWriter writer=PdfWriter.GetInstance(文档,新文件流(@“C:\Users\cmilne\Desktop\AA0081913_new.pdf”,FileMode.Create));//声明不包含分页符的新pdf的位置\名称。
document.Open();
PDF导入页面;
PdfPTable table=新的PdfPTable(1);
表1.1:百分比=100;
对于(int i=1;i iTextSharp当然有很多操作PDF的选项,但我没有看到删除分页符的选项。你知道它是否有该选项吗?iTextSharp当然有很多操作PDF的选项,但我没有看到删除分页符的选项。你知道它是否有该选项吗?是否要注释合并后的页面上是否也会出现问题?如果没有,则@Colton的回答会指明方向。尽管有可能会有所改进,例如,不同维度的页面连接不正确,也可能会对所需资源进行一些优化。完全正确。我已经更新了我的示例,以处理不同维度的页面(宽度和高度)。添加了using语句以提高内存使用率。是否希望合并页面上也显示批注?如果不希望,则@Colton的回答会指明方向。尽管有改进的可能,例如,不同维度的页面连接不正确,并且还可以对所需资源进行一些优化。完全正确。我有upd我更新了我的示例以处理不同维度(宽度和高度)的页面。添加了using语句以提高内存使用率。感谢您添加此答案。直到今天我还没有收到OPs评论!我更新了示例以处理不同维度(宽度和高度)的页面。添加了using语句以提高内存使用率。代码运行正常,但并没有解决问题。它只是使第一页变大了,仍然有两页。呃。感谢添加此答案。直到今天,我还错过了OPs注释!我更新了我的示例,以处理不同尺寸(宽度和高度)的页面.添加了using语句以提高内存使用率。代码运行正常,但并没有解决问题。它只是使第一页变大了,还有两页。啊,向下投票