首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用iTextSharp合并PDF会删除裁切框细节

使用iTextSharp合并PDF会删除裁切框细节
EN

Stack Overflow用户
提问于 2015-09-11 10:03:23
回答 1查看 160关注 0票数 0

我正在尝试使用iTextSharp来合并2个或更多的PDF文件。然而,我没有得到关于TrimBox的任何细节。在合并后的PDF上执行以下代码总是返回NULL

代码语言:javascript
复制
Rectangle rect = reader.GetBoxSize(1, "trim");

这是合并的代码。

代码语言:javascript
复制
public void Merge(List<String> InFiles, String OutFile)
        {
            using (FileStream stream = new FileStream(OutFile, FileMode.Create))
            using (Document doc = new Document())
            using (PdfCopy pdf = new PdfCopy(doc, stream))
            {
                doc.Open();

                PdfReader reader = null;
                PdfImportedPage page = null;

                InFiles.ForEach(file =>
                {
                    reader = new PdfReader(file);

                    for (int i = 0; i < reader.NumberOfPages; i++)
                    {
                         page = pdf.GetImportedPage(reader, i + 1);
                         pdf.AddPage(page);
                    }


                    pdf.FreeReader(reader);
                    reader.Close();
                });
            }
        }

如何保留合并后的框信息?

-艾伦-

EN

回答 1

Stack Overflow用户

发布于 2015-09-11 10:21:18

这是我创建的代码,用于使用iTextSharp合并纵向和横向文档。它运行得相当好。

代码语言:javascript
复制
public void MergeFiles(System.Collections.Generic.List<string> sourceFiles, string destinationFile)
{
    Document document=null;
    if (System.IO.File.Exists(destinationFile))
        System.IO.File.Delete(destinationFile);
    try
    {
        PdfCopy writer = null;    
        int numberOfPages=0;
        foreach(string sourceFile in sourceFiles)
        {                    
            PdfReader reader = new PdfReader(sourceFile);
            reader.ConsolidateNamedDestinations();                 
            numberOfPages = reader.NumberOfPages; 

            if(document==null)
            {
                document = new Document(reader.GetPageSizeWithRotation(1));
                writer = new PdfCopy(document, new FileStream(destinationFile, FileMode.Create));                      
                    document.Open();
            }
            for (int x = 1;x <= numberOfPages;x++ )
            {                     
                if (writer != null)
                {
                    PdfImportedPage page = writer.GetImportedPage(reader, x);
                    writer.AddPage(page);
                }
            }
            PRAcroForm form = reader.AcroForm;
            if (form != null && writer != null)                    
                writer.CopyAcroForm(reader);                                       
        }                
    }
    finally
    {
        if (document != null && document.IsOpen())
            document.Close();
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32514376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档