Я создаю pdf-файл из tiff-файла. С Acrobat 7 я получил ошибку при открытии, что токен не распознается. Я вижу только некоторые слова из полного текста, но не фотографии в этом pdf!Itextsharp «тип токена не распознан»
С читателем acrobat X Я правильно вижу pdf. когда я прокручиваю вниз, я получил сообщение о том, что в этом файле есть ошибка, но больше информации.
Кто-нибудь знает, где проблема? Я пробовал много PDF-версий в Itext без другого результата!
Вот код:
Clock.hocr.Elements.hDocument hdoc = new Clock.hocr.Elements.hDocument();
hdoc.AddFile("out3.html");
Clock.hocr.PDFSettings pdfset = new Clock.hocr.PDFSettings();
pdfset.ImageType = Clock.hocr.PdfImageType.JPeg;
pdfset.ImageQuality = 50;
//pdfset.Subject = "Fulltext";
//pdfset.Title = "ft";
//pdfset.Language = "german";
//pdfset.Author = "datapool";
pdfset.Dpi=300;
//pdfset.Keywords="...";
//pdfset.PdfOcrMode =Clock.hocr.OcrMode.Tesseract;
pdfset.WriteTextMode = Clock.hocr.WriteTextMode.Word;
//pdfset.Dpi = 300;
Clock.hocr.PdfCreator pdfcreat = new Clock.hocr.PdfCreator(pdfset,"test.pdf");
List<Image> pages = GetAllPages("test.tif");
for (int i = 0; i<hdoc.Pages.Count;i++)
{
Clock.hocr.Elements.hPage hpage = hdoc.Pages[i];
pdfcreat.AddPage(hpage, pages[i]);
}
pdfcreat.SaveAndClose();
Модули Clock.hocr вы можете найти на: http://hocrtopdf.codeplex.com/
public void AddPage(hPage page, System.Drawing.Image pageImage)
{
doc.NewPage();
doc.AddHeader("COPYRIGHT", "DATAPOOL GmbH");
AddImage(pageImage);
WriteUnderlayContent(page);
}
документ от типа itextsharp.text.document
public void AddImage(System.Drawing.Image image)
{
try
{
if (OnProcessImage != null)
{
AddImage(OnProcessImage(image));
return;
}
iTextSharp.text.Image i = GetImageForPDF(ImageProcessor.GetAsBitmap(image));
i.SetAbsolutePosition(0, 0);
// doc.SetPageSize(new iTextSharp.text.Rectangle(i.Width, i.Height));
i.ScaleAbsolute(doc.PageSize.Width, doc.PageSize.Height);
doc.Add(i);
}
catch (Exception x)
{
Debug.WriteLine(x.Message);
throw x;
}
}
...
private void WriteUnderlayContent(hPage page)
{
string pageText = page.Text;
foreach (hParagraph para in page.Paragraphs)
{
foreach (hLine line in para.Lines)
{
if (pdfSettings.WriteTextMode == WriteTextMode.Word)
{
line.AlignTops();
foreach (hWord c in line.Words)
{
c.CleanText();
BBox b = BBox.ConvertBBoxToPoints(c.BBox, pdfSettings.Dpi);
BBox lineBox = BBox.ConvertBBoxToPoints(line.BBox, pdfSettings.Dpi);
PdfContentByte cb = cb = writer.DirectContentUnder;
BaseFont base_font = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.WINANSI, false);
iTextSharp.text.Font font = new iTextSharp.text.Font(base_font);
float h = (int)Math.Ceiling(b.Height);
int font_size = (int)Math.Ceiling(h);
if (font_size == 0)
font_size = 2;
cb.BeginText();
cb.SetFontAndSize(base_font, (float)font_size);
cb.SetTextMatrix(b.Left, doc.PageSize.Height - b.Top - b.Height);
//float spacing = (c.BBox.Width/(c.Text.ToCharArray().Count()))/100;
float spacing = (c.BBox.Width/(c.Text.ToCharArray().Count()))/100 ;
cb.SetCharacterSpacing(spacing);
cb.ShowText(c.Text + " ");
cb.EndText();
}
}
else
{
line.CleanText();
BBox b = BBox.ConvertBBoxToPoints(line.BBox, pdfSettings.Dpi);
BBox lineBox = BBox.ConvertBBoxToPoints(line.BBox, pdfSettings.Dpi);
PdfContentByte cb = cb = writer.DirectContentUnder;
BaseFont base_font = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.WINANSI, false);
iTextSharp.text.Font font = new iTextSharp.text.Font(base_font);
float h = (int)Math.Ceiling(b.Height);
int font_size = (int)Math.Ceiling(h);
if (font_size == 0)
font_size = 2;
cb.BeginText();
cb.SetFontAndSize(base_font, (float)font_size);
cb.SetTextMatrix(b.Left, doc.PageSize.Height - b.Top - b.Height);
float spacing = (line.BBox.Width/(line.Text.ToCharArray().Count()))/100;
cb.SetCharacterSpacing(spacing);
cb.ShowText(line.Text);
cb.EndText();
}
}
}
}
В дикой природе существует множество различных TIFF, которые не соответствуют стандарту TIFF. Это может быть одной из причин. Другая причина может заключаться в том, как вы добавляете TIFF в PDF, используя iTextSharp. Может быть, вы делаете что-то неправильно. В любом случае, поскольку вы не разделяете TIFF, PDF и ни один из ваших кодов, очень маловероятно, что кто-то ответит на ваш вопрос. Это типичное замечание «не работает» без какой-либо информации, которая делает его реальным вопросом. –
Здравствуйте, я преобразовал tiff в jpg-страницы и добавил как jpeg в pdf ... с той же проблемой! Я думаю, что это не проблема! Я не могу поделиться этим тиффом, потому что это счет! – user1688566
ОК, в этом случае вы делаете что-то не так с iText, потому что мы можем создавать PDF-файлы, содержащие JPEG, без каких-либо проблем. Когда я попросил образец кода, я ожидал увидеть какой-то настоящий iText-код. Вместо этого вы имеете в виду проект третьей стороны, который нам неизвестен. Сначала обратитесь в службу поддержки hOcr2Pdf.NET. –