【发布时间】:2014-08-12 09:58:35
【问题描述】:
PDF 标记几乎适用于我尝试过的所有文档。然而,一位客户扫描了一些页面,他的计算机生成了一个可以抵抗盖章的 PDF 文档。嵌入的图像文件是 JBIG2 格式,但我不确定这是否重要。我已经用 Apache 的 pdfbox 调试了 PDF,我可以看到嵌入的文本。它只是没有显示出来。
这里是不会盖章的 PDF:http://demo.clearvillageinc.com/plans.pdf
还有我的代码:
static void Main(string[] args) {
string stamp = "<div style=\"color:#F00;\">Reviewed for Code Compliance</div>";
string fileName = @"C:\temp\source.pdf";
string outputFileName = @"C:\temp\source-output.pdf";
// Open a destination stream.
using (var destStream = new System.IO.MemoryStream()) {
using (var sourceReader = new PdfReader(fileName)) {
// Convert the HTML into a stamp.
using (var stampData = FromHtml(stamp)) {
using (var stampReader = new PdfReader(stampData)) {
using (var stamper = new PdfStamper(sourceReader, destStream)) {
stamper.Writer.CloseStream = false;
// Add the stamp stream to the source document.
var stampPage = stamper.GetImportedPage(stampReader, 1);
// Process all of the pages in the source document.
for (int i = 1; i <= sourceReader.NumberOfPages; i++) {
var canvas = stamper.GetOverContent(i);
canvas.AddTemplate(stampPage, 0, -50);
}
}
}
}
}
// Finished. Save the file.
using (var fs = new System.IO.FileStream(outputFileName, FileMode.Create)) {
destStream.Position = 0;
destStream.CopyTo(fs);
}
}
}
public static System.IO.Stream FromHtml(string html) {
var ms = new System.IO.MemoryStream();
// Convert html to pdf.
using (var document = new iTextSharp.text.Document()) {
var writer = iTextSharp.text.pdf.PdfWriter.GetInstance(document, ms);
writer.CloseStream = false;
document.Open();
using (var sr = new System.IO.StringReader(html)) {
XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, sr);
}
}
ms.Position = 0; // Reset for reading.
return ms;
}
【问题讨论】:
-
与Blank PDF generate when WriteCompatiblePdf method call of ITextSharp 相关。
/MediaBox[0 7072 612 7864]现在似乎很流行。
标签: pdf itextsharp