Esempio n. 1
0
TEST_F(FPDFDocEmbeddertest, DestGetPageIndex) {
  EXPECT_TRUE(OpenDocument("named_dests.pdf"));

  // NULL FPDF_DEST case.
  EXPECT_EQ(0U, FPDFDest_GetPageIndex(document(), nullptr));

  // Page number directly in item from Dests NameTree.
  FPDF_DEST dest = FPDF_GetNamedDestByName(document(), "First");
  EXPECT_TRUE(dest);
  EXPECT_EQ(1U, FPDFDest_GetPageIndex(document(), dest));

  // Page number via object reference in item from Dests NameTree.
  dest = FPDF_GetNamedDestByName(document(), "Next");
  EXPECT_TRUE(dest);
  EXPECT_EQ(1U, FPDFDest_GetPageIndex(document(), dest));

  // Page number directly in item from Dests dictionary.
  dest = FPDF_GetNamedDestByName(document(), "FirstAlternate");
  EXPECT_TRUE(dest);
  EXPECT_EQ(11U, FPDFDest_GetPageIndex(document(), dest));

  // Invalid object reference in item from Dests NameTree.
  dest = FPDF_GetNamedDestByName(document(), "LastAlternate");
  EXPECT_TRUE(dest);
  EXPECT_EQ(0U, FPDFDest_GetPageIndex(document(), dest));
}
Esempio n. 2
0
csPDFiumDest csPDFiumDocument::createDest(const void *_dest, const void *_action) const
{
  FPDF_DEST           dest = (FPDF_DEST)_dest;
  const FPDF_ACTION action = (const FPDF_ACTION)_action;

  if( action != NULL ) {
    if(        FPDFAction_GetType(action) == PDFACTION_GOTO  &&  dest == NULL ) {
      dest = FPDFAction_GetDest(impl->document, action);
    } else if( FPDFAction_GetType(action) == PDFACTION_REMOTEGOTO ) {
      const int size = FPDFAction_GetFilePath(action, NULL, 0);
      if( size < 1 ) {
        return csPDFiumDest();
      }
      QByteArray destFilename(size, '\0');
      FPDFAction_GetFilePath(action, destFilename.data(), destFilename.size());
      return csPDFiumDest(impl->fileName, QString::fromUtf8(destFilename));
    }
  }

  if( dest == NULL ) {
    return csPDFiumDest();
  }

  return csPDFiumDest(FPDFDest_GetPageIndex(impl->document, dest),
                      FPDFDest_GetZoomMode(dest) == FPDF_ZOOM_XYZ
                      ? QPointF(FPDFDest_GetZoomParam(dest, 0),
                                FPDFDest_GetZoomParam(dest, 1))
                      : QPointF());
}