当前位置: 首页 > 知识库问答 >
问题:

保存现有的PdfDocents-file到文件

郁高韵
2023-03-14

我目前正在尝试拆分一个PDF文件,然后将每个nePdfDocument保存到一个新文件中。问题是我找不到任何方法将新的PdfWriter附加到现有的PdfDocument。这是我目前用来打开和拆分PDF文件的代码(只是一个模型代码示例):

IList<int> splitByPage = new List<int>() { 1,2,3};
PdfDocument pdfDoc = new PdfDocument(new PdfReader(@"C:\temp\test.pdf"));
PdfSplitter splitter = new PdfSplitter(pdfDoc);
IList<PdfDocument> splittedDocuments = splitter.SplitByPageNumbers(splitByPage);

这很有效,我有一组PdfDocument对象。现在我想把它们保存到新文件中。我在java中找到了一个解决方案,可以基于给定的文档输出流创建一个新的PdfWriter实例。net我没有找到与此等效的。谢谢你的帮助!

共有1个答案

子车勇锐
2023-03-14

长话短说,您需要通过在GetNextPDWriter方法上创建一个新的PdfWriter实例来扩展PdfSplitter类处理文档的方式。

public static readonly String DEST = "splitDocument1_{0}.pdf";


public void Split()
{
    IList<int> splitByPage = new List<int>() {1, 2, 3};
    PdfDocument pdfDoc = new PdfDocument(new PdfReader(@"C:\temp\hello.pdf"));
    PdfSplitter splitter = new PdfSplitter(pdfDoc);
    IList<PdfDocument> splittedDocuments = new CustomPdfSplitter(pdfDoc, DEST).SplitByPageNumbers(splitByPage);

    foreach (PdfDocument doc in splittedDocuments)
    {
        doc.Close();
    }

    pdfDoc.Close();
}

private class CustomPdfSplitter : PdfSplitter
{
    private String dest;
    private int partNumber = 1;

    public CustomPdfSplitter(PdfDocument pdfDocument, String dest) : base(pdfDocument)
    {
        this.dest = dest;
    }

    protected override PdfWriter GetNextPdfWriter(PageRange documentPageRange)
    {
        return new PdfWriter(String.Format(dest, partNumber++));
    }
}

我在网上找不到GetNextPDWriter的文档,但这里是源代码:

/// <summary>This method is called when another split document is to be created.</summary>
/// <remarks>
/// This method is called when another split document is to be created.
/// You can override this method and return your own
/// <see cref="T:iText.Kernel.Pdf.PdfWriter" />
/// depending on your needs.
/// </remarks>
/// <param name="documentPageRange">the page range of the original document to be included in the document being created now.
/// </param>
/// <returns>the PdfWriter instance for the document which is being created.</returns>
protected internal virtual PdfWriter GetNextPdfWriter(PageRange documentPageRange)

除了Github上的示例,我还可以在音量计数器常见问题解答(第三个示例)上找到一个示例。

 类似资料:
  • 通过日志收集系统将分散在数百台服务器上的数据集中存储在某中心服务器上,这是运维最原始的需求。早年的 scribed ,甚至直接就把输出的语法命名为 <store>。Logstash 当然也能做到这点。 和 LogStash::Inputs::File 不同, LogStash::Outputs::File 里可以使用 sprintf format 格式来自动定义输出到带日期命名的路径。 配置示例

  • 问题内容: 我必须对数据库类使用SQLPLUS,我们的第一个任务是简单保存。 我按照说明进行了操作。(我正在使用PuTTY来访问sqlplus) “在本练习中使用以下SQL命令,并尝试使用SAVE和SPOOL命令来保存SQL命令并输出到外部文件。 对于此实验,请执行以下操作: 在SQL>提示符下,键入(或如果文件已存在),然后单击;然后键入任何SQL命令,这些命令将保存到test.sql文件。稍后

  • 此代码从您要在editText中注册的熟人处接收信息,然后单击finButton将接收到的信息保存为一个名为FriendList.txt的文件。但是,当按下finButton时,将从当前执行的try-catch语句中输出Toast消息。此外,checkpermission也不起作用,它包装在try~catch语句中,但在logcat上没有输出。 和显化。 洛克卡特

  • 我试图在一个特定文件夹中保存多个图像第一个图像保存正确,但下一个图像只是替换第一个图像。如何保存多个图像?如何动态命名并使用相同的名称保存图像,但使用不同的扩展名,如image、image1、image2。。。下面是我的代码

  • 问题内容: 好的,这就是我想要做的(注意:我对PHP还是陌生的): 我有一个电影/电视剧等的注册表格。然后将填写的表格中的数据注册(register.php)并发送到MySQL数据库,该数据库工作正常。但是,这里出现了:我还希望在同一个寄存器文件(register.php)中将数据存储在现有XML文件(data.xml)中。这里重要的是,每个成功提交的表单都存储在相同的XML文件(data.xml

  • 本文向大家介绍Python实现读取目录所有文件的文件名并保存到txt文件代码,包括了Python实现读取目录所有文件的文件名并保存到txt文件代码的使用技巧和注意事项,需要的朋友参考一下 代码: (使用os.listdir) 代码:(使用os.walk) walk递归地对目录及子目录处理,每次返回的三项分别为:当前递归的目录,当前递归的目录下的所有子目录,当前递归的目录下的所有文件。