相关疑难解决方法(0)

无法使用MemoryStream合并2个PDF

我有一个ac#类,它接受HTML并使用wkhtmltopdf将其转换为PDF。
正如您将在下面看到的,我正在生成3个PDF-横向,纵向和两者结合。

properties对象包含html作为字符串,以及landscape / portrait的参数。

System.IO.MemoryStream PDF = new WkHtmlToPdfConverter().GetPdfStream(properties);
System.IO.FileStream file = new System.IO.FileStream("abc_landscape.pdf", System.IO.FileMode.Create);
PDF.Position = 0;

properties.IsHorizontalOrientation = false;
System.IO.MemoryStream PDF_portrait = new WkHtmlToPdfConverter().GetPdfStream(properties);
System.IO.FileStream file_portrait = new System.IO.FileStream("abc_portrait.pdf", System.IO.FileMode.Create);
PDF_portrait.Position = 0;

System.IO.MemoryStream finalStream = new System.IO.MemoryStream();
PDF.CopyTo(finalStream);
PDF_portrait.CopyTo(finalStream);
System.IO.FileStream file_combined = new System.IO.FileStream("abc_combined.pdf", System.IO.FileMode.Create);

try
{
    PDF.WriteTo(file);
    PDF.Flush();

    PDF_portrait.WriteTo(file_portrait);
    PDF_portrait.Flush();

    finalStream.WriteTo(file_combined);
    finalStream.Flush();
}
catch (Exception)
{
    throw;
}
finally
{
    PDF.Close();
    file.Close();

    PDF_portrait.Close();
    file_portrait.Close();

    finalStream.Close();
    file_combined.Close();
}
Run Code Online (Sandbox Code Playgroud)

PDF“ abc_landscape.pdf”和“ abc_portrait.pdf”如预期那样正确生成,但是当我尝试将两者合并为第三个pdf(abc_combined.pdf)时,该操作失败。

我正在MemoryStream执行合并,在调试时,我可以看到 …

c# wkhtmltopdf

12
推荐指数
3
解决办法
285
查看次数

如何合并两个内存流?

我有两个MemoryStream实例.

如何将它们合并到一个实例中?

好吧,现在我无法从一个MemoryStream复制到另一个.这是一个方法:

public static Stream ZipFiles(IEnumerable<FileToZip> filesToZip) {
ZipStorer storer = null;
        MemoryStream result = null;
        try {
            MemoryStream memory = new MemoryStream(1024);
            storer = ZipStorer.Create(memory, GetDateTimeInRuFormat());
            foreach (var currentFilePath in filesToZip) {
                string fileName = Path.GetFileName(currentFilePath.FullPath);
                storer.AddFile(ZipStorer.Compression.Deflate, currentFilePath.FullPath, fileName,
                               GetDateTimeInRuFormat());
            }
            result = new MemoryStream((int) storer.ZipFileStream.Length);
            storer.ZipFileStream.CopyTo(result); //Does not work! 
                                               //result's length will be zero
        }
        catch (Exception) {
        }
        finally {
            if (storer != null)
                storer.Close();
        }
        return result;
    }
Run Code Online (Sandbox Code Playgroud)

.net c# memorystream

10
推荐指数
2
解决办法
2万
查看次数

将内存流合并到一个iText文档

我有四个要合并的MemoryStream数据,然后打开pdfDocument,而不创建单个文件.

可以将它们写入文件然后合并它们但这样做会很糟糕,这也会导致一些问题,所以我想避免这种情况.

但是,我找不到将MemoryStreams与iText5 for .NET合并的方法.

现在,这是我用文件做的方式:

    private static void ConcatenateDocuments()
    {
        var stream = new MemoryStream();

        var readerFrontPage = new PdfReader(Folder + FrontPageName);
        var readerDocA = new PdfReader(Folder + docA);
        var readerDocB = new PdfReader(Folder + DocB);
        var readerAppendix = new PdfReader(Folder + Appendix);
        var pdfCopyFields = new PdfCopyFields(stream);

        pdfCopyFields.AddDocument(readerFrontPage);
        pdfCopyFields.AddDocument(readerDocA );
        pdfCopyFields.AddDocument(readerDocB);
        pdfCopyFields.AddDocument(readerAppendix);
        pdfCopyFields.Close();

        SavePdf(stream, FilenameReport);
    }
Run Code Online (Sandbox Code Playgroud)

由于我需要删除文件的使用,因此我保留了MemoryStream,因为不同的部分是从不同的资源构建的.所以我引用了这些内存流.

如何才能做到这一点?

merge memorystream itext c#-4.0

6
推荐指数
1
解决办法
9662
查看次数

标签 统计

c# ×2

memorystream ×2

.net ×1

c#-4.0 ×1

itext ×1

merge ×1

wkhtmltopdf ×1