C# 为什么用iText复制PDF会取消嵌入某些字体?
我和你有一些问题。(特别是iTextSharp。)我正试图将一个大的PDF文件拆分成一堆小的文件。这不是问题所在;这很有效 我发现,输入PDF文件中的一些字体(只有一种;其余的仍然嵌入得很好)虽然嵌入到输入PDF文件中,但它们不再嵌入到输出PDF文件中,尽管是用iText复制的 最终,这会产生一个可读的输出PDF文件,当在Adobe Reader中打开该文件时,会出现错误:“字体‘ZurichBT BoldItalic’包含一个坏的/BBOX。”。原始输入文件没有问题 我真的不明白为什么 下面是一个简单复制输入PDF的测试用例应用程序。我不能提供我自己的输入PDF的示例,因为它包含机密信息,但如果不能完全用代码回答这一问题,我会尽快用一个小而简单的文件复制它C# 为什么用iText复制PDF会取消嵌入某些字体?,c#,pdf,fonts,itextsharp,itext,C#,Pdf,Fonts,Itextsharp,Itext,我和你有一些问题。(特别是iTextSharp。)我正试图将一个大的PDF文件拆分成一堆小的文件。这不是问题所在;这很有效 我发现,输入PDF文件中的一些字体(只有一种;其余的仍然嵌入得很好)虽然嵌入到输入PDF文件中,但它们不再嵌入到输出PDF文件中,尽管是用iText复制的 最终,这会产生一个可读的输出PDF文件,当在Adobe Reader中打开该文件时,会出现错误:“字体‘ZurichBT BoldItalic’包含一个坏的/BBOX。”。原始输入文件没有问题 我真的不明白为什么 下面是
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;
using iTextSharp;
using iTextSharp.text;
using iTextSharp.text.pdf;
static void Main(string[] args)
{
PdfReader reader = new PdfReader("input.pdf");
Document doc = new Document();
PdfSmartCopy writer = new PdfSmartCopy(doc, new FileStream("output.pdf", fileMode.OpenOrCreate, FileAccess.Write));
doc.Open();
for (int i = 1; i <= reader.NumberOfPages; i++)
{
//byte[] page = reader.GetPageContent(i);
//string data = ExtractTextFromPDFBytes(page);
if (true)//data.Contains("Search Token"))
{
doc.SetPageSize(reader.GetPageSizeWithRotation(i));
doc.NewPage();
PdfImportedPage iPage = writer.GetImportedPage(reader, i);
writer.AddPage(iPage);
}
}
doc.Close();
}
使用制度;
使用系统集合;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Text.RegularExpressions;
使用System.IO;
使用iTextSharp;
使用iTextSharp.text;
使用iTextSharp.text.pdf;
静态void Main(字符串[]参数)
{
PdfReader reader=新的PdfReader(“input.pdf”);
单据单据=新单据();
PdfSmartCopy writer=newpdfsmartcopy(doc,newfilestream(“output.pdf”,fileMode.OpenOrCreate,FileAccess.Write));
doc.Open();
对于(int i=1;i这是由于输入PDF损坏所致,尽管原始源文件中没有明显错误。正如BlackShadows所示,代码很好。处理原始源文件的不同副本可获得正确的输出。嗨,我复制了您的代码,尝试使用我的PDF(PDF/a-1B)。很好。