无法将一个pdf字体文本打印到另一个pdf?

时间:2013-08-28 12:39:32

标签: pdf fonts itext

我在telufu pdf中有pdf(用123.176.47.55替换anils.com)我想从那个pdf中提取一些文本(就像在那个pdf页面中我需要阅读的第3块最新的块数据)使用mupdf-1.3-windows

的该页面的所有字体

它会下载pdf使用的所有字体,但是当我通过将这些字体用于另一个pdf来编写该文本时,一些未被重新编写的文本就像

//output file name
public static String pdf1 = "C:\\Documents and Settings\\Administrator\\Desktop\\itextpdf\\anil.pdf";

public static void main(String[] args) throws IOException, DocumentException {
    try {
        PdfReader reader = new PdfReader(new URL("http://anils/DraftRolls/PDFGeneration.aspx?urlPath=D%3a\\SSR_2013_FINAL+ROLLS\\AC_238\\Telugu\\S01A238P038.PDF"),null);
        System.out.println("This PDF has "+reader.getNumberOfPages()+" pages.");

        // reading page no 3 
        String page = PdfTextExtractor.getTextFromPage(reader, 3);                     

        // all fonts I had checked total of 7 fonts but I didn't get all the fonts 
        BaseFont f = BaseFont.createFont("C:\\Documents and Settings\\Administrator\\Desktop\\itextpdf\\fonts\\AAAAAD+Gautami-0174.ttf", "", BaseFont.EMBEDDED);
        Font telugu = new Font(f, 18.0f, Font.BOLD);

        Paragraph description = new Paragraph(page,telugu);

        // description.setAlignment(Paragraph.ALIGN_CENTER); 

        Document document = new Document();
        // step 2
        PdfWriter.getInstance(document, new FileOutputStream(pdf1));
        // step 3
        document.open();
        document.add(description);
        document.close();
    }
    catch(Exception e)
    {
        System.out.println(e);
    }
}

某些文字从未与任何字体匹配如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

我认为这本身就太难了。

您应该将其转换为另一种格式,最好是基于文本的格式。

我经常需要提取矢量模式,我个人使用svg来实现这个目的。

答案 1 :(得分:0)

正如您在原始问题的评论中提到的那样,文本可能就像在原始文本中那样组织,没有必要重排它,将原始页面作为模板导入并且仅显示选定区域可能是一种解决方案满足您的需求:

public void testImportFragment() throws IOException, DocumentException
{
    PdfReader reader = new PdfReader(new URL("http://anils/DraftRolls/PDFGeneration.aspx?urlPath=D%3a\\SSR_2013_FINAL+ROLLS\\AC_238\\Telugu\\S01A238P038.PDF"),null);
    Document document = new Document();
    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("C:\\Documents and Settings\\Administrator\\Desktop\\itextpdf\\anil.pdf"));
    document.open();
    document.newPage();
    document.add(new Paragraph("Test importing the contents of the first row of page three in a different order."));
    copyFragment(reader, writer);
    document.close();
    reader.close();
}

public void copyFragment(PdfReader source, PdfWriter target) throws DocumentException
{
    PdfImportedPage page = target.getImportedPage(source, 3);
    PdfContentByte directContent = target.getDirectContent();

    PdfTemplate template = directContent.createTemplate(110, 57);
    template.addTemplate(page, 1, 0, 0, 1, -15, -706);
    directContent.addTemplate(template, 200, 700);

    template = directContent.createTemplate(110, 57);
    template.addTemplate(page, 1, 0, 0, 1, -202, -705);
    directContent.addTemplate(template, 200, 600);

    template = directContent.createTemplate(110, 57);
    template.addTemplate(page, 1, 0, 0, 1, -389, -705);
    directContent.addTemplate(template, 200, 500);
}