gpt4 book ai didi

c# - iText7 在内存中创建 PDF 而不是物理文件

转载 作者:行者123 更新时间:2023-11-30 19:54:52 24 4
gpt4 key购买 nike

如何使用 itext7 在内存流而不是物理文件中创建 PDF?我不知道如何在最新版本中执行此操作,有帮助吗?

我尝试了以下代码,但 pdfSM 未正确填充:

string filePath = "./abc.pdf";

MemoryStream pdfSM = new ByteArrayOutputStream();

PdfDocument doc = new PdfDocument(new PdfReader(filePath), new PdfWriter(pdfSM));
.......

doc.close();

下面的完整测试代码供您引用,它在将 filePath 传递给 PdfWriter 但不适用于内存流时有效:

    public static readonly String sourceFolder = "../../FormTest/";

public static readonly String destinationFolder = "../../Output/";

static void Main(string[] args)
{

String srcFilePattern = "I-983";
String destPattern = "I-129_2014_";

String src = sourceFolder + srcFilePattern + ".pdf";
String dest = destinationFolder + destPattern + "_flattened.pdf";
MemoryStream returnSM = new MemoryStream();

PdfDocument doc = new PdfDocument(new PdfReader(src), new PdfWriter(returnSM));

PdfAcroForm form = PdfAcroForm.GetAcroForm(doc, false);

foreach (PdfFormField field in form.GetFormFields().Values)
{
var fieldName = field.GetFieldName();
var type = field.GetType();
if (fieldName != null)
{
if (type.Name.Equals("PdfTextFormField"))
{
field.SetValue("T");
}
}
}
form.FlattenFields();
doc.Close();

}

最佳答案

这对我有用。

    public byte[] CreatePdf()
{
var stream = new MemoryStream();
var writer = new PdfWriter(stream);
var pdf = new PdfDocument(writer);
var document = new Document(pdf);

document.Add(new Paragraph("Hello world!"));
document.Close();

return stream.ToArray();
}

关于c# - iText7 在内存中创建 PDF 而不是物理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40540741/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com