Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 删除PDF分页符_C#_Pdf_Itextsharp_Ghostscript - Fatal编程技术网

C# 删除PDF分页符

C# 删除PDF分页符,c#,pdf,itextsharp,ghostscript,C#,Pdf,Itextsharp,Ghostscript,如何从pdf中删除分页符,使输出成为单个“页面”pdf?所以,如果一个普通页面是400x900,我有4个页面,那么生成的文件将是1600x900。我以前为Tif文件()做过这项工作,但我想用PDF做。我是否可以转换为ps,删除任何表示“分页符”的代码,然后转换回pdf?使用iTextSharp C#库。它为您提供了许多操作PDF的选项。我以前在为封闭源代码文档存储库编写导入应用程序时使用过它。它就像一个符咒。唯一的缺点是他们的文档不完整,因为他们希望你购买他们的书。您可以免费浏览他们的Java

如何从pdf中删除分页符,使输出成为单个“页面”pdf?所以,如果一个普通页面是400x900,我有4个页面,那么生成的文件将是1600x900。我以前为Tif文件()做过这项工作,但我想用PDF做。我是否可以转换为ps,删除任何表示“分页符”的代码,然后转换回pdf?

使用iTextSharp C#库。它为您提供了许多操作PDF的选项。我以前在为封闭源代码文档存储库编写导入应用程序时使用过它。它就像一个符咒。唯一的缺点是他们的文档不完整,因为他们希望你购买他们的书。您可以免费浏览他们的Java API,因为它几乎与C#相同,只需使用它就可以找到C#版本

iText:

使用iTextSharp C#库。它为您提供了许多操作PDF的选项。我以前在为封闭源代码文档存储库编写导入应用程序时使用过它。它就像一个符咒。唯一的缺点是他们的文档不完整,因为他们希望你购买他们的书。您可以免费浏览他们的Java API,因为它几乎与C#相同,只需使用它就可以找到C#版本


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语句以提高内存使用率。代码运行正常,但并没有解决问题。它只是使第一页变大了,还有两页。啊,向下投票