DLLEXPORT FPDF_PAGE STDCALL FPDFPage_New(FPDF_DOCUMENT document, int page_index, double width, double height) { CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(document); if (!pDoc) return nullptr; if (page_index < 0) page_index = 0; if (pDoc->GetPageCount() < page_index) page_index = pDoc->GetPageCount(); CPDF_Dictionary* pPageDict = pDoc->CreateNewPage(page_index); if (!pPageDict) return NULL; CPDF_Array* pMediaBoxArray = new CPDF_Array; pMediaBoxArray->Add(new CPDF_Number(0)); pMediaBoxArray->Add(new CPDF_Number(0)); pMediaBoxArray->Add(new CPDF_Number(FX_FLOAT(width))); pMediaBoxArray->Add(new CPDF_Number(FX_FLOAT(height))); pPageDict->SetAt("MediaBox", pMediaBoxArray); pPageDict->SetAt("Rotate", new CPDF_Number(0)); pPageDict->SetAt("Resources", new CPDF_Dictionary); CPDF_Page* pPage = new CPDF_Page; pPage->Load(pDoc, pPageDict); pPage->ParseContent(); return pPage; }
DLLEXPORT FPDF_PAGE STDCALL FPDFPage_New(FPDF_DOCUMENT document, int page_index, double width, double height) { if (!document) return NULL; // CPDF_Parser* pParser = (CPDF_Parser*)document; CPDF_Document* pDoc = (CPDF_Document*)document; if(page_index < 0) page_index = 0; if(pDoc->GetPageCount()<page_index) page_index = pDoc->GetPageCount(); // if (page_index < 0 || page_index >= pDoc->GetPageCount()) // return NULL; CPDF_Dictionary* pPageDict = pDoc->CreateNewPage(page_index); if(!pPageDict) return NULL; CPDF_Array* pMediaBoxArray = FX_NEW CPDF_Array; pMediaBoxArray->Add(FX_NEW CPDF_Number(0)); pMediaBoxArray->Add(FX_NEW CPDF_Number(0)); pMediaBoxArray->Add(FX_NEW CPDF_Number(FX_FLOAT(width))); pMediaBoxArray->Add(FX_NEW CPDF_Number(FX_FLOAT(height))); pPageDict->SetAt("MediaBox", pMediaBoxArray); pPageDict->SetAt("Rotate", FX_NEW CPDF_Number(0)); pPageDict->SetAt("Resources", FX_NEW CPDF_Dictionary); CPDF_Page* pPage = FX_NEW CPDF_Page; pPage->Load(pDoc,pPageDict); pPage->ParseContent(); return pPage; }
DLLEXPORT FPDF_PAGE STDCALL FPDFPage_New(FPDF_DOCUMENT document, int page_index, double width, double height) { CPDF_Document* pDoc = CPDFDocumentFromFPDFDocument(document); if (!pDoc) return nullptr; page_index = std::min(std::max(page_index, 0), pDoc->GetPageCount()); CPDF_Dictionary* pPageDict = pDoc->CreateNewPage(page_index); if (!pPageDict) return nullptr; CPDF_Array* pMediaBoxArray = new CPDF_Array; pMediaBoxArray->Add(new CPDF_Number(0)); pMediaBoxArray->Add(new CPDF_Number(0)); pMediaBoxArray->Add(new CPDF_Number(FX_FLOAT(width))); pMediaBoxArray->Add(new CPDF_Number(FX_FLOAT(height))); pPageDict->SetAt("MediaBox", pMediaBoxArray); pPageDict->SetAt("Rotate", new CPDF_Number(0)); pPageDict->SetAt("Resources", new CPDF_Dictionary); #ifdef PDF_ENABLE_XFA CPDFXFA_Page* pPage = new CPDFXFA_Page((CPDFXFA_Document*)document, page_index); pPage->LoadPDFPage(pPageDict); #else // PDF_ENABLE_XFA CPDF_Page* pPage = new CPDF_Page(pDoc, pPageDict, true); pPage->ParseContent(); #endif // PDF_ENABLE_XFA return pPage; }
DLLEXPORT void STDCALL FPDFPage_SetMediaBox(FPDF_PAGE page, float left, float bottom, float right, float top) { if(!page) return; CPDF_Page* pPage = (CPDF_Page*)page; CPDF_Dictionary* pPageDict = pPage->m_pFormDict; CPDF_Array* pMediaBoxArray = FX_NEW CPDF_Array; pMediaBoxArray->Add(FX_NEW CPDF_Number(left)); pMediaBoxArray->Add(FX_NEW CPDF_Number(bottom)); pMediaBoxArray->Add(FX_NEW CPDF_Number(FX_FLOAT(right))); pMediaBoxArray->Add(FX_NEW CPDF_Number(FX_FLOAT(top))); pPageDict->SetAt("MediaBox", pMediaBoxArray); }
void CBC_OneDimWriter::RenderResult(const CFX_WideStringC& contents, uint8_t* code, int32_t codeLength, bool isDevice, int32_t& e) { if (codeLength < 1) { BC_EXCEPTION_CHECK_ReturnVoid(e); } if (m_ModuleHeight < 20.0) { m_ModuleHeight = 20; } int32_t codeOldLength = codeLength; int32_t leftPadding = 0; int32_t rightPadding = 0; if (m_bLeftPadding) { leftPadding = 7; } if (m_bRightPadding) { rightPadding = 7; } codeLength += leftPadding; codeLength += rightPadding; m_outputHScale = 1.0; if (m_Width > 0) { m_outputHScale = (FX_FLOAT)m_Width / (FX_FLOAT)codeLength; } if (!isDevice) { m_outputHScale = std::max(m_outputHScale, static_cast<FX_FLOAT>(m_ModuleWidth)); } FX_FLOAT dataLengthScale = 1.0; if (m_iDataLenth > 0 && contents.GetLength() != 0) { dataLengthScale = FX_FLOAT(contents.GetLength()) / FX_FLOAT(m_iDataLenth); } if (m_iDataLenth > 0 && contents.GetLength() == 0) { dataLengthScale = FX_FLOAT(1) / FX_FLOAT(m_iDataLenth); } m_multiple = 1; if (!isDevice) { m_multiple = (int32_t)ceil(m_outputHScale * dataLengthScale); } int32_t outputHeight = 1; if (!isDevice) { if (m_Height == 0) { outputHeight = std::max(20, m_ModuleHeight); } else { outputHeight = m_Height; } } int32_t outputWidth = codeLength; if (!isDevice) { outputWidth = (int32_t)(codeLength * m_multiple / dataLengthScale); } m_barWidth = m_Width; if (!isDevice) { m_barWidth = codeLength * m_multiple; } m_output.reset(new CBC_CommonBitMatrix); m_output->Init(outputWidth, outputHeight); int32_t outputX = leftPadding * m_multiple; for (int32_t inputX = 0; inputX < codeOldLength; inputX++) { if (code[inputX] == 1) { if (outputX >= outputWidth) { break; } if (outputX + m_multiple > outputWidth && outputWidth - outputX > 0) { m_output->SetRegion(outputX, 0, outputWidth - outputX, outputHeight, e); break; } m_output->SetRegion(outputX, 0, m_multiple, outputHeight, e); BC_EXCEPTION_CHECK_ReturnVoid(e); } outputX += m_multiple; } }