Как создать 3D-аннотации в PDF-файле? - PullRequest
0 голосов
/ 10 апреля 2020

Я хочу создать трехмерную аннотацию, но я не знаю, как читать поток файлов PR C. Может кто-нибудь мне помочь? Файл PDF, созданный с помощью следующего кода, при открытии 3D-аннотации предлагает проанализировать 3D-ошибку.

  char *pszFilename = "test3D.pdf";
    PdfStreamedDocument document(pszFilename);
    PdfPage* pPage;
    PdfFont* pFont;
    pPage = document.CreatePage(PdfPage::CreateStandardPageSize(ePdfPageSize_A4));


    PdfRect             rect(100.0, 100.0, 300.0, 300.0);
    PdfAnnotation*      pAnnotation = page->CreateAnnotation(ePdfAnnotation_3D, rect);


    char                *streamBuff = NULL;
    pdf_long            bufLen = 0;


    PdfFileInputStream  fileStream("DK19191X_201_001.prc");
    bufLen = fileStream.GetFileLength();

    streamBuff = new char[bufLen + 1];
    pdf_long    readError = fileStream.Read(streamBuff, bufLen);
    PdfString   strStream(streamBuff, bufLen);
    if (streamBuff)delete[]streamBuff;

    PdfDictionary dict3dAnnot = pAnnotation->GetObject()->GetDictionary();

    //3D Streams
    PdfObject       stream3d;
    PdfObject       prcObj(strStream);
    PdfDictionary   dirct3dStream = stream3d.GetDictionary();

    dirct3dStream.AddKey(PdfName("Type"), PdfString("3D"));
    dirct3dStream.AddKey(PdfName("Subtype"), PdfString("U3D"));
    dirct3dStream.AddKey(PdfName("Filter"), PdfString("FlateDecode"));
    dict3dAnnot.AddKey(PdfName("3DD"), prcObj);

    painter.FinishPage();
    document.Close();
...