- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
因此,我将获取 10000 个 2 页 pdf 文件,并使用 iTextSharp 将它们合并为一个。
这是我正在做的一些松散代码:
Document document = new Document();
using(PdfWriter writer = PdfWriter.GetInstance(document, new FileStream("merged.pdf", FileMode.Create)))
{
PdfContentByte cb = writer.DirectContent;
PdfReader reader = null;
foreach(string thisFile in files)
{
reader = new PdfReader(thisFile);
var page1 = writer.GetImportedPage(reader, 1);
var page2 = writer.GetImportedPage(reader, 2);
cb.AddTemplate(page1, 1f, 0, 0, 1f, 0, 0);
cb.AddTemplate(page2, 1f, 0, 0, 1f, 0, 0);
}
}
我试图了解瓶颈可能出现在两个地方。我运行了一些性能测试,最慢的进程自然是使用 PdfReader 读取每个文件以及保存文件的处置,它是从 using PdfWriter block 调用的。
在此过程中,所有 16 个核心的利用率约为 25%。我尝试使用固态硬盘代替 SATA 7.2k rpm 硬盘,速度几乎完全相同。
如何加快此过程?没有分配任务,因为计算机之间的读取速度会更慢。即使这意味着更改为另一种语言、库或编写较低级别的内容,我也需要比目前更快地完成此过程。目前合并大约需要 10 分钟。
最佳答案
所以我终于解决了这个问题。以下是我的性能结果,其中获胜方法的代码如下:我在所有这三个测试中使用了同一台机器
还没有尝试弄清楚为什么相同的代码在 Ubuntu 上的 java 中运行得更快,但我会接受它。一般来说,我定义了该函数之外的所有主要变量,因为在此过程中它被调用了 36000 次。
public void addPage(String inputPdf, String barcodeText, String pageTitle)
{
try
{
//read in the pdf
reader = new PdfReader(inputPdf);
//all pdfs must have 2 pages (front and back).
//set to throw an out of bounds error if not. caught up stream
for (int i = 1; i <= Math.Min(reader.NumberOfPages,2); i++)
{
//import the page from source pdf
copiedPage = copyPdf.GetImportedPage(reader, i);
// add the page to the new document
copyPdf.AddPage(copiedPage);
}
//cleanup this page, keeps a big memory leak away
copyPdf.FreeReader(reader);
copyPdf.Flush();
}
finally
{
reader.Close();
}
}
关于performance - iTextSharp PDFWriter 瓶颈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11148284/
我想创建一个 PdfWriter 对象并为页眉和页脚设置事件。问题是如果我创建一个新的 PDF,它会起作用。但我的问题是我已经在输出流中有一个 PDF。请在下面找到我的示例代码。 Document d
因此,我将获取 10000 个 2 页 pdf 文件,并使用 iTextSharp 将它们合并为一个。 这是我正在做的一些松散代码: Document document = new Document(
我正在使用 PdfWriter创建 PDF 文档。我正在添加 PdfPTable到 PDF 文档。该表有标题行,然后是实际数据行。如果表很大,那么它的一部分会被结转到新页面。我希望这个页面也有表格标题
我正在为一家公司创建一个自动提醒系统,并且在重写代码时遇到了一些问题(注意:代码已经工作 - 但已经进行了必要的重大更改)。几个小时的困惑和查看我所做的更改并没有解决这个问题。它成功创建了 pdf,元
我有一个程序使用 Itextsharp 和 PdfWriter 获取 pdf 并将文本打印到第一页。目前,对于我必须在其上输入文本的每个 pdf,这一直按预期工作。但是,当源 pdf 的布局为横向时,
在过去的 1 小时里我一直在伤脑筋,我无法解决这个问题...我知道用 java 编写 PDF 很容易,但我的输出流大小为零,...这是我的代码.. Document document = new D
我正在尝试使用以下内容使用 iTextSharp 5.3.4 创建 pdf 文档 Document document = new Document(); FileStream stm = new Fi
我可以选择将数据导出为 PDF,代码如下: response.setHeader("Content-disposition", "attachment; filename=\"" + title
要制作由许多 PDF 的第一页组成的 PDF,我使用以下代码: using (FileStream fs = new FileStream(Path.Combine(pathPorducedPDFs,
我有一个方法,它接受以下内容: 字节数组,即PDF文件 “从”尺寸 “适合”尺寸 这个想法是将具有特定大小的 PDF 文件转换为另一种大小。我想返回一个字节数组,并希望将整个内容保存在内存中。 我在构
我最近开始使用 iTextSharp 从数据生成 PDF 报告。它工作得很好。 在一个特定的报告中,我需要一个部分始终出现在页面底部。我正在使用 PdfContentByte 从底部创建一条虚线 20
我一直在尝试使用JasperReports生成报告,但收到此错误: WARNING: #{order_approval.print}: java.lang.NoSuchMethodError: com
我想合并两个 PDF 文件(仅选定的页面)并向它们添加自定义页眉和页脚。 因此我不使用 PdfCopy 只是复制页面而不改变它。我使用 PdfWriter。 问题是我不知道如何使用 PdfWriter
我正在使用 iTextSharp 创建一些 pdf 文件。这些文档有好几页,在所有这些页面上,除了最后一页,我们需要用斜体字体书写文本。 这是我使用 PdfTemplate 的代码,它可以工作,但我无
我想将 pdf 库 iText(7) 用于大学项目。我需要它来将 JFrame 或其他一些 Swing 组件直接转换为 pdf 文档。我使用Eclipse并通过Maven项目的pom.xml导入ker
我正在使用 Gradle 设置一个使用 itext 7 生成 pdf 文件的测试项目。 如果我在 Netbeans IDE 中运行我的主类,一切都会正常;将创建一个“结果”文件夹,在其中我可以找到生成
这个问题已经有答案了: How do I fix a NoSuchMethodError? (33 个回答) 已关闭 4 年前。 我在 Tomcat 中运行,jasper 报告 PDF 崩溃,exce
伙计们!很长一段时间我无法修复异常:java.lang.NoSuchMethodError: com.lowagie.text.pdf.PdfWriter.setRgbTransparencyBlen
我是一名优秀的程序员,十分优秀!